Face mask detection using yolo-v5

This python notebooks shows how to train an yolo-v5 model to detect face masks

fmd.jpeg

ABout the dataset: The annotated data of faces with and with out mask can be downloaded

https://www.kaggle.com/techzizou/labeled-mask-dataset-yolo-darknet

The dataset has individual images and the corresponding boudning box detail for each file in txt format

Steps

t.png

In [1]:
from google.colab import drive
import os
import zipfile
import urllib3
import numpy as np
import cv2
import shutil
import random
import matplotlib.pyplot as plt
import pandas as pd
In [47]:
MOUNT='/content/drive/'
PROJECT_PATH = "/content/drive/My Drive/face_mask_detection"
ZIP_FILE_NAME='archive.zip'
DATA_FOLDER='face_mask_data'
URL='https://www.kaggle.com/techzizou/labeled-mask-dataset-yolo-darknet/download'
IMAGE_FILE_EXTENSION='.jpg'
ANNOT_FILE_EXTENSION='.txt'
TEST_SIZE=100
VALIDATION_SIZE=300
NO_OF_CLASSES=2
NAMES =['MASK', 'NO MASK']
YAML_FILE='mask_detection.yaml'
PERFORMANCE_FILE_LOC="yolov5/runs/train/exp"
In [3]:
drive.mount(MOUNT)
Drive already mounted at /content/drive/; to attempt to forcibly remount, call drive.mount("/content/drive/", force_remount=True).
In [88]:
os.chdir(PROJECT_PATH)

Check the GPU allocated

In [5]:
gpu_info = !nvidia-smi
gpu_info = '\n'.join(gpu_info)
if gpu_info.find('failed') >= 0:
  print('Not connected to a GPU')
else:
  print(gpu_info)
Tue Dec 14 07:48:03 2021       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 495.44       Driver Version: 460.32.03    CUDA Version: 11.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  Tesla P100-PCIE...  Off  | 00000000:00:04.0 Off |                    0 |
| N/A   40C    P0    27W / 250W |      0MiB / 16280MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

install the OIDV4 toolkit. clone from git

In [108]:
!git clone https://github.com/EscVM/OIDv4_ToolKit.git
Cloning into 'OIDv4_ToolKit'...
remote: Enumerating objects: 422, done.
remote: Total 422 (delta 0), reused 0 (delta 0), pack-reused 422
Receiving objects: 100% (422/422), 34.08 MiB | 16.02 MiB/s, done.
Resolving deltas: 100% (146/146), done.
In [109]:
!pip3 install -r OIDv4_ToolKit/requirements.txt
Requirement already satisfied: pandas in /usr/local/lib/python3.7/dist-packages (from -r OIDv4_ToolKit/requirements.txt (line 1)) (1.1.5)
Requirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from -r OIDv4_ToolKit/requirements.txt (line 2)) (1.19.5)
Collecting awscli
  Downloading awscli-1.22.24-py3-none-any.whl (3.8 MB)
     |████████████████████████████████| 3.8 MB 7.7 MB/s 
Requirement already satisfied: urllib3 in /usr/local/lib/python3.7/dist-packages (from -r OIDv4_ToolKit/requirements.txt (line 5)) (1.24.3)
Requirement already satisfied: tqdm in /usr/local/lib/python3.7/dist-packages (from -r OIDv4_ToolKit/requirements.txt (line 7)) (4.62.3)
Requirement already satisfied: opencv-python in /usr/local/lib/python3.7/dist-packages (from -r OIDv4_ToolKit/requirements.txt (line 9)) (4.1.2.30)
Requirement already satisfied: pytz>=2017.2 in /usr/local/lib/python3.7/dist-packages (from pandas->-r OIDv4_ToolKit/requirements.txt (line 1)) (2018.9)
Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.7/dist-packages (from pandas->-r OIDv4_ToolKit/requirements.txt (line 1)) (2.8.2)
Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.7/dist-packages (from python-dateutil>=2.7.3->pandas->-r OIDv4_ToolKit/requirements.txt (line 1)) (1.15.0)
Collecting botocore==1.23.24
  Downloading botocore-1.23.24-py3-none-any.whl (8.4 MB)
     |████████████████████████████████| 8.4 MB 26.4 MB/s 
Requirement already satisfied: PyYAML<5.5,>=3.10 in /usr/local/lib/python3.7/dist-packages (from awscli->-r OIDv4_ToolKit/requirements.txt (line 3)) (3.13)
Collecting colorama<0.4.4,>=0.2.5
  Downloading colorama-0.4.3-py2.py3-none-any.whl (15 kB)
Collecting s3transfer<0.6.0,>=0.5.0
  Downloading s3transfer-0.5.0-py3-none-any.whl (79 kB)
     |████████████████████████████████| 79 kB 8.1 MB/s 
Collecting docutils<0.16,>=0.10
  Downloading docutils-0.15.2-py3-none-any.whl (547 kB)
     |████████████████████████████████| 547 kB 50.3 MB/s 
Collecting rsa<4.8,>=3.1.2
  Downloading rsa-4.7.2-py3-none-any.whl (34 kB)
Collecting jmespath<1.0.0,>=0.7.1
  Downloading jmespath-0.10.0-py2.py3-none-any.whl (24 kB)
Collecting urllib3
  Downloading urllib3-1.26.7-py2.py3-none-any.whl (138 kB)
     |████████████████████████████████| 138 kB 52.4 MB/s 
Requirement already satisfied: pyasn1>=0.1.3 in /usr/local/lib/python3.7/dist-packages (from rsa<4.8,>=3.1.2->awscli->-r OIDv4_ToolKit/requirements.txt (line 3)) (0.4.8)
Installing collected packages: urllib3, jmespath, botocore, s3transfer, rsa, docutils, colorama, awscli
  Attempting uninstall: urllib3
    Found existing installation: urllib3 1.24.3
    Uninstalling urllib3-1.24.3:
      Successfully uninstalled urllib3-1.24.3
  Attempting uninstall: rsa
    Found existing installation: rsa 4.8
    Uninstalling rsa-4.8:
      Successfully uninstalled rsa-4.8
  Attempting uninstall: docutils
    Found existing installation: docutils 0.17.1
    Uninstalling docutils-0.17.1:
      Successfully uninstalled docutils-0.17.1
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
requests 2.23.0 requires urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1, but you have urllib3 1.26.7 which is incompatible.
datascience 0.10.6 requires folium==0.2.1, but you have folium 0.8.3 which is incompatible.
Successfully installed awscli-1.22.24 botocore-1.23.24 colorama-0.4.3 docutils-0.15.2 jmespath-0.10.0 rsa-4.7.2 s3transfer-0.5.0 urllib3-1.26.7
In [7]:
!git clone https://github.com/ultralytics/yolov5
Cloning into 'yolov5'...
remote: Enumerating objects: 10200, done.
remote: Total 10200 (delta 0), reused 0 (delta 0), pack-reused 10200
Receiving objects: 100% (10200/10200), 10.46 MiB | 7.17 MiB/s, done.
Resolving deltas: 100% (7065/7065), done.
In [8]:
!pip install -U -r yolov5/requirements.txt
Requirement already satisfied: matplotlib>=3.2.2 in /usr/local/lib/python3.7/dist-packages (from -r yolov5/requirements.txt (line 4)) (3.2.2)
Collecting matplotlib>=3.2.2
  Downloading matplotlib-3.5.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl (11.2 MB)
     |████████████████████████████████| 11.2 MB 8.4 MB/s 
Requirement already satisfied: numpy>=1.18.5 in /usr/local/lib/python3.7/dist-packages (from -r yolov5/requirements.txt (line 5)) (1.19.5)
Collecting numpy>=1.18.5
  Downloading numpy-1.21.4-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (15.7 MB)
     |████████████████████████████████| 15.7 MB 39.7 MB/s 
Requirement already satisfied: opencv-python>=4.1.2 in /usr/local/lib/python3.7/dist-packages (from -r yolov5/requirements.txt (line 6)) (4.1.2.30)
Collecting opencv-python>=4.1.2
  Downloading opencv_python-4.5.4.60-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (60.3 MB)
     |████████████████████████████████| 60.3 MB 1.6 MB/s 
Requirement already satisfied: Pillow>=7.1.2 in /usr/local/lib/python3.7/dist-packages (from -r yolov5/requirements.txt (line 7)) (7.1.2)
Collecting Pillow>=7.1.2
  Downloading Pillow-8.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB)
     |████████████████████████████████| 3.1 MB 33.1 MB/s 
Collecting PyYAML>=5.3.1
  Downloading PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (596 kB)
     |████████████████████████████████| 596 kB 47.4 MB/s 
Requirement already satisfied: requests>=2.23.0 in /usr/local/lib/python3.7/dist-packages (from -r yolov5/requirements.txt (line 9)) (2.23.0)
Collecting requests>=2.23.0
  Downloading requests-2.26.0-py2.py3-none-any.whl (62 kB)
     |████████████████████████████████| 62 kB 866 kB/s 
Requirement already satisfied: scipy>=1.4.1 in /usr/local/lib/python3.7/dist-packages (from -r yolov5/requirements.txt (line 10)) (1.4.1)
Collecting scipy>=1.4.1
  Downloading scipy-1.7.3-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (38.1 MB)
     |████████████████████████████████| 38.1 MB 1.5 MB/s 
Requirement already satisfied: torch>=1.7.0 in /usr/local/lib/python3.7/dist-packages (from -r yolov5/requirements.txt (line 11)) (1.10.0+cu111)
Requirement already satisfied: torchvision>=0.8.1 in /usr/local/lib/python3.7/dist-packages (from -r yolov5/requirements.txt (line 12)) (0.11.1+cu111)
Requirement already satisfied: tqdm>=4.41.0 in /usr/local/lib/python3.7/dist-packages (from -r yolov5/requirements.txt (line 13)) (4.62.3)
Requirement already satisfied: tensorboard>=2.4.1 in /usr/local/lib/python3.7/dist-packages (from -r yolov5/requirements.txt (line 16)) (2.7.0)
Requirement already satisfied: pandas>=1.1.4 in /usr/local/lib/python3.7/dist-packages (from -r yolov5/requirements.txt (line 20)) (1.1.5)
Collecting pandas>=1.1.4
  Downloading pandas-1.3.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.3 MB)
     |████████████████████████████████| 11.3 MB 39.0 MB/s 
Requirement already satisfied: seaborn>=0.11.0 in /usr/local/lib/python3.7/dist-packages (from -r yolov5/requirements.txt (line 21)) (0.11.2)
Collecting thop
  Downloading thop-0.0.31.post2005241907-py3-none-any.whl (8.7 kB)
Requirement already satisfied: pyparsing>=2.2.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib>=3.2.2->-r yolov5/requirements.txt (line 4)) (3.0.6)
Collecting fonttools>=4.22.0
  Downloading fonttools-4.28.3-py3-none-any.whl (884 kB)
     |████████████████████████████████| 884 kB 51.9 MB/s 
Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.7/dist-packages (from matplotlib>=3.2.2->-r yolov5/requirements.txt (line 4)) (21.3)
Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.7/dist-packages (from matplotlib>=3.2.2->-r yolov5/requirements.txt (line 4)) (2.8.2)
Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.7/dist-packages (from matplotlib>=3.2.2->-r yolov5/requirements.txt (line 4)) (0.11.0)
Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib>=3.2.2->-r yolov5/requirements.txt (line 4)) (1.3.2)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.7/dist-packages (from requests>=2.23.0->-r yolov5/requirements.txt (line 9)) (2021.10.8)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.7/dist-packages (from requests>=2.23.0->-r yolov5/requirements.txt (line 9)) (1.26.7)
Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.7/dist-packages (from requests>=2.23.0->-r yolov5/requirements.txt (line 9)) (2.10)
Requirement already satisfied: charset-normalizer~=2.0.0 in /usr/local/lib/python3.7/dist-packages (from requests>=2.23.0->-r yolov5/requirements.txt (line 9)) (2.0.8)
Requirement already satisfied: typing-extensions in /usr/local/lib/python3.7/dist-packages (from torch>=1.7.0->-r yolov5/requirements.txt (line 11)) (3.10.0.2)
Requirement already satisfied: tensorboard-plugin-wit>=1.6.0 in /usr/local/lib/python3.7/dist-packages (from tensorboard>=2.4.1->-r yolov5/requirements.txt (line 16)) (1.8.0)
Requirement already satisfied: wheel>=0.26 in /usr/local/lib/python3.7/dist-packages (from tensorboard>=2.4.1->-r yolov5/requirements.txt (line 16)) (0.37.0)
Requirement already satisfied: werkzeug>=0.11.15 in /usr/local/lib/python3.7/dist-packages (from tensorboard>=2.4.1->-r yolov5/requirements.txt (line 16)) (1.0.1)
Requirement already satisfied: google-auth<3,>=1.6.3 in /usr/local/lib/python3.7/dist-packages (from tensorboard>=2.4.1->-r yolov5/requirements.txt (line 16)) (1.35.0)
Requirement already satisfied: markdown>=2.6.8 in /usr/local/lib/python3.7/dist-packages (from tensorboard>=2.4.1->-r yolov5/requirements.txt (line 16)) (3.3.6)
Requirement already satisfied: setuptools>=41.0.0 in /usr/local/lib/python3.7/dist-packages (from tensorboard>=2.4.1->-r yolov5/requirements.txt (line 16)) (57.4.0)
Requirement already satisfied: tensorboard-data-server<0.7.0,>=0.6.0 in /usr/local/lib/python3.7/dist-packages (from tensorboard>=2.4.1->-r yolov5/requirements.txt (line 16)) (0.6.1)
Requirement already satisfied: absl-py>=0.4 in /usr/local/lib/python3.7/dist-packages (from tensorboard>=2.4.1->-r yolov5/requirements.txt (line 16)) (0.12.0)
Requirement already satisfied: grpcio>=1.24.3 in /usr/local/lib/python3.7/dist-packages (from tensorboard>=2.4.1->-r yolov5/requirements.txt (line 16)) (1.42.0)
Requirement already satisfied: google-auth-oauthlib<0.5,>=0.4.1 in /usr/local/lib/python3.7/dist-packages (from tensorboard>=2.4.1->-r yolov5/requirements.txt (line 16)) (0.4.6)
Requirement already satisfied: protobuf>=3.6.0 in /usr/local/lib/python3.7/dist-packages (from tensorboard>=2.4.1->-r yolov5/requirements.txt (line 16)) (3.17.3)
Requirement already satisfied: pytz>=2017.3 in /usr/local/lib/python3.7/dist-packages (from pandas>=1.1.4->-r yolov5/requirements.txt (line 20)) (2018.9)
Requirement already satisfied: six in /usr/local/lib/python3.7/dist-packages (from absl-py>=0.4->tensorboard>=2.4.1->-r yolov5/requirements.txt (line 16)) (1.15.0)
Requirement already satisfied: cachetools<5.0,>=2.0.0 in /usr/local/lib/python3.7/dist-packages (from google-auth<3,>=1.6.3->tensorboard>=2.4.1->-r yolov5/requirements.txt (line 16)) (4.2.4)
Requirement already satisfied: pyasn1-modules>=0.2.1 in /usr/local/lib/python3.7/dist-packages (from google-auth<3,>=1.6.3->tensorboard>=2.4.1->-r yolov5/requirements.txt (line 16)) (0.2.8)
Requirement already satisfied: rsa<5,>=3.1.4 in /usr/local/lib/python3.7/dist-packages (from google-auth<3,>=1.6.3->tensorboard>=2.4.1->-r yolov5/requirements.txt (line 16)) (4.7.2)
Requirement already satisfied: requests-oauthlib>=0.7.0 in /usr/local/lib/python3.7/dist-packages (from google-auth-oauthlib<0.5,>=0.4.1->tensorboard>=2.4.1->-r yolov5/requirements.txt (line 16)) (1.3.0)
Requirement already satisfied: importlib-metadata>=4.4 in /usr/local/lib/python3.7/dist-packages (from markdown>=2.6.8->tensorboard>=2.4.1->-r yolov5/requirements.txt (line 16)) (4.8.2)
Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.7/dist-packages (from importlib-metadata>=4.4->markdown>=2.6.8->tensorboard>=2.4.1->-r yolov5/requirements.txt (line 16)) (3.6.0)
Requirement already satisfied: pyasn1<0.5.0,>=0.4.6 in /usr/local/lib/python3.7/dist-packages (from pyasn1-modules>=0.2.1->google-auth<3,>=1.6.3->tensorboard>=2.4.1->-r yolov5/requirements.txt (line 16)) (0.4.8)
Requirement already satisfied: oauthlib>=3.0.0 in /usr/local/lib/python3.7/dist-packages (from requests-oauthlib>=0.7.0->google-auth-oauthlib<0.5,>=0.4.1->tensorboard>=2.4.1->-r yolov5/requirements.txt (line 16)) (3.1.1)
Installing collected packages: requests, Pillow, numpy, fonttools, scipy, pandas, matplotlib, thop, PyYAML, opencv-python
  Attempting uninstall: requests
    Found existing installation: requests 2.23.0
    Uninstalling requests-2.23.0:
      Successfully uninstalled requests-2.23.0
  Attempting uninstall: Pillow
    Found existing installation: Pillow 7.1.2
    Uninstalling Pillow-7.1.2:
      Successfully uninstalled Pillow-7.1.2
  Attempting uninstall: numpy
    Found existing installation: numpy 1.19.5
    Uninstalling numpy-1.19.5:
      Successfully uninstalled numpy-1.19.5
  Attempting uninstall: scipy
    Found existing installation: scipy 1.4.1
    Uninstalling scipy-1.4.1:
      Successfully uninstalled scipy-1.4.1
  Attempting uninstall: pandas
    Found existing installation: pandas 1.1.5
    Uninstalling pandas-1.1.5:
      Successfully uninstalled pandas-1.1.5
  Attempting uninstall: matplotlib
    Found existing installation: matplotlib 3.2.2
    Uninstalling matplotlib-3.2.2:
      Successfully uninstalled matplotlib-3.2.2
  Attempting uninstall: PyYAML
    Found existing installation: PyYAML 3.13
    Uninstalling PyYAML-3.13:
      Successfully uninstalled PyYAML-3.13
  Attempting uninstall: opencv-python
    Found existing installation: opencv-python 4.1.2.30
    Uninstalling opencv-python-4.1.2.30:
      Successfully uninstalled opencv-python-4.1.2.30
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
yellowbrick 1.3.post1 requires numpy<1.20,>=1.16.0, but you have numpy 1.21.4 which is incompatible.
google-colab 1.0.0 requires pandas~=1.1.0; python_version >= "3.0", but you have pandas 1.3.5 which is incompatible.
google-colab 1.0.0 requires requests~=2.23.0, but you have requests 2.26.0 which is incompatible.
datascience 0.10.6 requires folium==0.2.1, but you have folium 0.8.3 which is incompatible.
awscli 1.22.24 requires PyYAML<5.5,>=3.10, but you have pyyaml 6.0 which is incompatible.
albumentations 0.1.12 requires imgaug<0.2.7,>=0.2.5, but you have imgaug 0.2.9 which is incompatible.
Successfully installed Pillow-8.4.0 PyYAML-6.0 fonttools-4.28.3 matplotlib-3.5.1 numpy-1.21.4 opencv-python-4.5.4.60 pandas-1.3.5 requests-2.26.0 scipy-1.7.3 thop-0.0.31.post2005241907
In [ ]:
 

Extract the files in Zip file and split the data into Train-validation-test sample

In [ ]:
with zipfile.ZipFile(ZIP_FILE_NAME, "r") as z:
    z.extractall(PROJECT_PATH+"/"+DATA_FOLDER)
In [ ]:
!ls
 archive.zip	  face_mask_detection_model.ipynb   yolov5
 face_mask_data   OIDv4_ToolKit			   'yolov5_mask detection'

Create train, validation and test folders and transfer the samples to the corresponding folders

In [76]:
os.mkdir (DATA_FOLDER+"/"+'train')
os.mkdir(DATA_FOLDER+"/"+'validation')
os.mkdir(DATA_FOLDER+"/"+'test')
In [6]:
file_names=[]
for file in os.listdir(DATA_FOLDER+"/obj"):
    if file.endswith(IMAGE_FILE_EXTENSION):
      file_names.append(file)
print (len(file_names), " images found")
1510  images found
In [12]:
print (file_names)
['unmasked (1384).jpg', 'unmasked (1385).jpg', 'unmasked (1386).jpg', 'unmasked (1387).jpg', 'unmasked (1388).jpg', 'unmasked (1389).jpg', 'unmasked (1390).jpg', 'unmasked (1391).jpg', 'unmasked (1392).jpg', 'unmasked (1393).jpg', 'unmasked (1394).jpg', 'unmasked (1395).jpg', 'unmasked (1396).jpg', 'unmasked (1397).jpg', 'unmasked (1398).jpg', 'unmasked (1399).jpg', 'unmasked (1400).jpg', 'unmasked (1401).jpg', 'unmasked (1402).jpg', 'unmasked (1403).jpg', 'unmasked (1404).jpg', 'unmasked (1405).jpg', 'unmasked (1406).jpg', 'unmasked (1407).jpg', 'unmasked (1408).jpg', 'unmasked (1409).jpg', 'unmasked (1410).jpg', 'unmasked (1411).jpg', 'unmasked (1412).jpg', 'unmasked (1413).jpg', 'unmasked (1414).jpg', 'unmasked (1415).jpg', 'unmasked (1416).jpg', 'unmasked (1417).jpg', 'unmasked (1418).jpg', 'unmasked (1419).jpg', 'unmasked (1420).jpg', 'unmasked (1421).jpg', 'unmasked (1422).jpg', 'unmasked (1424).jpg', 'unmasked (1425).jpg', 'unmasked (1426).jpg', 'unmasked (1427).jpg', 'unmasked (1428).jpg', 'unmasked (1429).jpg', 'unmasked (1430).jpg', 'unmasked (1432).jpg', 'unmasked (1433).jpg', 'unmasked (1434).jpg', 'unmasked (1435).jpg', 'unmasked (1436).jpg', 'unmasked (1437).jpg', 'unmasked (1438).jpg', 'unmasked (1439).jpg', 'unmasked (1440).jpg', 'unmasked (1441).jpg', 'unmasked (1442).jpg', 'unmasked (1443).jpg', 'unmasked (1444).jpg', 'unmasked (1445).jpg', 'unmasked (1446).jpg', 'unmasked (1447).jpg', 'unmasked (1448).jpg', 'unmasked (1449).jpg', 'unmasked (1450).jpg', 'unmasked (1451).jpg', 'unmasked (1452).jpg', 'unmasked (1453).jpg', 'unmasked (1454).jpg', 'unmasked (1455).jpg', 'unmasked (1456).jpg', 'unmasked (1457).jpg', 'unmasked (1458).jpg', 'unmasked (1459).jpg', 'unmasked (1460).jpg', 'unmasked (1461).jpg', 'unmasked (1462).jpg', 'unmasked (1463).jpg', 'unmasked (1464).jpg', 'unmasked (1465).jpg', 'unmasked (1466).jpg', 'unmasked (1467).jpg', 'unmasked (1468).jpg', 'unmasked (1469).jpg', 'unmasked (1470).jpg', 'unmasked (1471).jpg', 'unmasked (1472).jpg', 'unmasked (1473).jpg', 'unmasked (1475).jpg', 'unmasked (1476).jpg', 'unmasked (1477).jpg', 'unmasked (1478).jpg', 'unmasked (1479).jpg', 'unmasked (1480).jpg', 'unmasked (1481).jpg', 'unmasked (1482).jpg', 'unmasked (1483).jpg', 'unmasked (1484).jpg', 'unmasked (1485).jpg', 'unmasked (1486).jpg', 'unmasked (1487).jpg', 'unmasked (1488).jpg', 'unmasked (1489).jpg', 'unmasked (1490).jpg', 'unmasked (1491).jpg', 'unmasked (1492).jpg', 'unmasked (1493).jpg', 'unmasked (1494).jpg', 'unmasked (1495).jpg', 'unmasked (1496).jpg', 'unmasked (1497).jpg', 'unmasked (1498).jpg', 'unmasked (1499).jpg', 'unmasked (1500).jpg', 'unmasked (1501).jpg', 'unmasked (1502).jpg', 'unmasked (1503).jpg', 'unmasked (1504).jpg', 'unmasked (1505).jpg', 'unmasked (1506).jpg', 'unmasked (1507).jpg', 'unmasked (1508).jpg', 'unmasked (1509).jpg', 'unmasked (1510).jpg', 'unmasked (1511).jpg', 'unmasked (1512).jpg', 'unmasked (1513).jpg', 'unmasked (1514).jpg', 'unmasked (1515).jpg', 'unmasked (1516).jpg', 'unmasked (1517).jpg', 'unmasked (1518).jpg', 'unmasked (1519).jpg', 'unmasked (1520).jpg', 'unmasked (1521).jpg', 'unmasked (1522).jpg', 'unmasked (1523).jpg', 'unmasked (1524).jpg', 'unmasked (1525).jpg', 'unmasked (1526).jpg', 'unmasked (1527).jpg', 'unmasked (1528).jpg', 'unmasked (1529).jpg', 'unmasked (1530).jpg', 'unmasked (1531).jpg', 'unmasked (1532).jpg', 'unmasked (1533).jpg', 'unmasked (1534).jpg', 'unmasked (1535).jpg', 'unmasked (1536).jpg', 'unmasked (1537).jpg', 'unmasked (1538).jpg', 'unmasked (1539).jpg', 'unmasked (1540).jpg', 'unmasked (1541).jpg', 'unmasked (1542).jpg', 'unmasked (1543).jpg', 'unmasked (1544).jpg', 'unmasked (1545).jpg', 'unmasked (1546).jpg', 'unmasked (1547).jpg', 'unmasked (1549).jpg', 'unmasked (1550).jpg', 'unmasked (1551).jpg', 'unmasked (1552).jpg', 'unmasked (1553).jpg', 'unmasked (1554).jpg', 'unmasked (1555).jpg', 'unmasked (1556).jpg', 'unmasked (1557).jpg', 'unmasked (1558).jpg', 'unmasked (1559).jpg', 'unmasked (1560).jpg', 'unmasked (1561).jpg', 'unmasked (1562).jpg', 'unmasked (1563).jpg', 'unmasked (1564).jpg', 'unmasked (1565).jpg', 'unmasked (1566).jpg', 'unmasked (1567).jpg', 'unmasked (1568).jpg', 'unmasked (1569).jpg', 'unmasked (1570).jpg', 'unmasked (1571).jpg', 'unmasked (1572).jpg', 'unmasked (1573).jpg', 'unmasked (1574).jpg', 'unmasked (1575).jpg', 'unmasked (1576).jpg', 'unmasked (1577).jpg', 'unmasked (1578).jpg', 'unmasked (1579).jpg', 'unmasked (1580).jpg', 'unmasked (1581).jpg', 'unmasked (1582).jpg', 'unmasked (1583).jpg', 'unmasked (1584).jpg', 'unmasked (1585).jpg', 'unmasked (1586).jpg', 'unmasked (1587).jpg', 'unmasked (1588).jpg', 'unmasked (1591).jpg', 'unmasked (1592).jpg', 'unmasked (1593).jpg', 'unmasked (1594).jpg', 'unmasked (1595).jpg', 'unmasked (1596).jpg', 'unmasked (1597).jpg', 'unmasked (1598).jpg', 'unmasked (1599).jpg', 'unmasked (1600).jpg', 'unmasked (1601).jpg', 'unmasked (1602).jpg', 'unmasked (1603).jpg', 'unmasked (1604).jpg', 'unmasked (1605).jpg', 'unmasked (1606).jpg', 'unmasked (1607).jpg', 'unmasked (1609).jpg', 'unmasked (1610).jpg', 'unmasked (1611).jpg', 'unmasked (1612).jpg', 'unmasked (1613).jpg', 'unmasked (1614).jpg', 'unmasked (1615).jpg', 'unmasked (1616).jpg', 'unmasked (1617).jpg', 'unmasked (1618).jpg', 'unmasked (1619).jpg', 'unmasked (1620).jpg', 'unmasked (1621).jpg', 'unmasked (1622).jpg', 'unmasked (1623).jpg', 'unmasked (1624).jpg', 'unmasked (1625).jpg', 'unmasked (1626).jpg', 'unmasked (1627).jpg', 'unmasked (1628).jpg', 'unmasked (1629).jpg', 'unmasked (1630).jpg', 'unmasked (1631).jpg', 'unmasked (1632).jpg', 'unmasked (1633).jpg', 'unmasked (1634).jpg', 'unmasked (1635).jpg', 'unmasked (1636).jpg', 'unmasked (1637).jpg', 'unmasked (1638).jpg', 'unmasked (1639).jpg', 'unmasked (1640).jpg', 'unmasked (1642).jpg', 'unmasked (1644).jpg', 'unmasked (1645).jpg', 'unmasked (1646).jpg', 'unmasked (1647).jpg', 'unmasked (1648).jpg', 'unmasked (1649).jpg', 'unmasked (1650).jpg', 'unmasked (1651).jpg', 'unmasked (1652).jpg', 'unmasked (1653).jpg', 'unmasked (1654).jpg', 'unmasked (1655).jpg', 'unmasked (1656).jpg', 'unmasked (1659).jpg', 'unmasked (1662).jpg', 'unmasked (1663).jpg', 'unmasked (1669).jpg', 'unmasked (1670).jpg', 'unmasked (1671).jpg', 'unmasked (1672).jpg', 'unmasked (1673).jpg', 'unmasked (1674).jpg', 'unmasked (1677).jpg', 'unmasked (1680).jpg', 'unmasked (1682).jpg', 'unmasked (1683).jpg', 'unmasked (1688).jpg', 'unmasked (1690).jpg', 'unmasked (1697).jpg', 'unmasked (1699).jpg', 'unmasked (1708).jpg', 'unmasked (1709).jpg', 'unmasked (1714).jpg', 'unmasked (1716).jpg', 'unmasked (1725).jpg', 'unmasked (1730).jpg', 'unmasked (1732).jpg', 'unmasked (1733).jpg', 'unmasked (1739).jpg', 'unmasked (1741).jpg', 'unmasked (1746).jpg', 'unmasked (1748).jpg', 'unmasked (1752).jpg', 'unmasked (1758).jpg', 'unmasked (1761).jpg', 'unmasked (1762).jpg', 'unmasked (1763).jpg', 'unmasked (1764).jpg', 'unmasked (1769).jpg', 'unmasked (1777).jpg', 'unmasked (1778).jpg', 'unmasked (1785).jpg', 'unmasked (1788).jpg', 'unmasked (1792).jpg', 'unmasked (1793).jpg', 'unmasked (1794).jpg', 'unmasked (1795).jpg', 'unmasked (1796).jpg', 'unmasked (1800).jpg', 'unmasked (1803).jpg', 'unmasked (1807).jpg', 'unmasked (1813).jpg', 'unmasked (1815).jpg', 'unmasked (1819).jpg', 'unmasked (1822).jpg', 'unmasked (1824).jpg', 'unmasked (1827).jpg', 'unmasked (1834).jpg', 'unmasked (1835).jpg', 'unmasked (1839).jpg', 'unmasked (1840).jpg', 'unmasked (1843).jpg', 'unmasked (1852).jpg', 'unmasked (1853).jpg', 'unmasked (1854).jpg', 'unmasked (1856).jpg', 'unmasked (1858).jpg', 'unmasked (1859).jpg', 'unmasked (1864).jpg', 'unmasked (1865).jpg', 'unmasked (1866).jpg', 'unmasked (1867).jpg', 'unmasked (1869).jpg', 'unmasked (1872).jpg', 'unmasked (1875).jpg', 'unmasked (1876).jpg', 'unmasked (1879).jpg', 'unmasked (1882).jpg', 'unmasked (1885).jpg', 'unmasked (1886).jpg', 'unmasked (1888).jpg', 'unmasked (1891).jpg', 'unmasked (1894).jpg', 'unmasked (1897).jpg', 'unmasked (1899).jpg', 'unmasked (1900).jpg', 'unmasked (1903).jpg', 'unmasked (1904).jpg', 'unmasked (1907).jpg', 'unmasked (1912).jpg', 'with_mask (1).jpg', 'with_mask (10).jpg', 'with_mask (100).jpg', 'with_mask (101).jpg', 'with_mask (102).jpg', 'with_mask (103).jpg', 'with_mask (104).jpg', 'with_mask (105).jpg', 'with_mask (11).jpg', 'with_mask (12).jpg', 'with_mask (13).jpg', 'with_mask (14).jpg', 'with_mask (15).jpg', 'with_mask (16).jpg', 'with_mask (17).jpg', 'with_mask (18).jpg', 'with_mask (19).jpg', 'with_mask (2).jpg', 'with_mask (20).jpg', 'with_mask (21).jpg', 'with_mask (22).jpg', 'with_mask (23).jpg', 'with_mask (24).jpg', 'with_mask (25).jpg', 'with_mask (26).jpg', 'with_mask (27).jpg', 'with_mask (28).jpg', 'with_mask (29).jpg', 'with_mask (3).jpg', 'with_mask (30).jpg', 'with_mask (31).jpg', 'with_mask (32).jpg', 'with_mask (33).jpg', 'with_mask (34).jpg', 'with_mask (35).jpg', 'with_mask (36).jpg', 'with_mask (37).jpg', 'with_mask (38).jpg', 'with_mask (39).jpg', 'with_mask (4).jpg', 'with_mask (40).jpg', 'with_mask (41).jpg', 'with_mask (42).jpg', 'with_mask (43).jpg', 'with_mask (44).jpg', 'with_mask (45).jpg', 'with_mask (46).jpg', 'with_mask (47).jpg', 'with_mask (48).jpg', 'with_mask (49).jpg', 'with_mask (5).jpg', 'with_mask (50).jpg', 'with_mask (51).jpg', 'with_mask (52).jpg', 'with_mask (53).jpg', 'with_mask (54).jpg', 'with_mask (55).jpg', 'with_mask (56).jpg', 'with_mask (57).jpg', 'with_mask (58).jpg', 'with_mask (59).jpg', 'with_mask (6).jpg', 'with_mask (60).jpg', 'with_mask (61).jpg', 'with_mask (62).jpg', 'with_mask (63).jpg', 'with_mask (64).jpg', 'with_mask (65).jpg', 'with_mask (66).jpg', 'with_mask (67).jpg', 'with_mask (68).jpg', 'with_mask (69).jpg', 'with_mask (7).jpg', 'with_mask (70).jpg', 'with_mask (71).jpg', 'with_mask (72).jpg', 'with_mask (73).jpg', 'with_mask (74).jpg', 'with_mask (75).jpg', 'with_mask (76).jpg', 'with_mask (77).jpg', 'with_mask (78).jpg', 'with_mask (79).jpg', 'with_mask (8).jpg', 'with_mask (80).jpg', 'with_mask (81).jpg', 'with_mask (82).jpg', 'with_mask (83).jpg', 'with_mask (84).jpg', 'with_mask (85).jpg', 'with_mask (86).jpg', 'with_mask (87).jpg', 'with_mask (88).jpg', 'with_mask (89).jpg', 'with_mask (9).jpg', 'with_mask (90).jpg', 'with_mask (91).jpg', 'with_mask (92).jpg', 'with_mask (93).jpg', 'with_mask (94).jpg', 'with_mask (95).jpg', 'with_mask (96).jpg', 'with_mask (97).jpg', 'with_mask (98).jpg', 'with_mask (99).jpg', 'with_maska (1).jpg', 'with_maska (10).jpg', 'with_maska (11).jpg', 'with_maska (12).jpg', 'with_maska (13).jpg', 'with_maska (14).jpg', 'with_maska (15).jpg', 'with_maska (16).jpg', 'with_maska (17).jpg', 'with_maska (18).jpg', 'with_maska (19).jpg', 'with_maska (2).jpg', 'with_maska (20).jpg', 'with_maska (21).jpg', 'with_maska (22).jpg', 'with_maska (23).jpg', 'with_maska (24).jpg', 'with_maska (25).jpg', 'with_maska (26).jpg', 'with_maska (27).jpg', 'with_maska (28).jpg', 'with_maska (29).jpg', 'with_maska (3).jpg', 'with_maska (4).jpg', 'with_maska (5).jpg', 'with_maska (6).jpg', 'with_maska (7).jpg', 'with_maska (8).jpg', 'with_maska (9).jpg', 'with_maskb (1).jpg', 'with_maskb (10).jpg', 'with_maskb (11).jpg', 'with_maskb (12).jpg', 'with_maskb (13).jpg', 'with_maskb (14).jpg', 'with_maskb (15).jpg', 'with_maskb (2).jpg', 'with_maskb (3).jpg', 'with_maskb (4).jpg', 'with_maskb (5).jpg', 'with_maskb (6).jpg', 'with_maskb (7).jpg', 'with_maskb (8).jpg', 'with_maskb (9).jpg', 'masked (1360).jpg', 'masked (1361).jpg', 'masked (1362).jpg', 'masked (1363).jpg', 'masked (1364).jpg', 'masked (1365).jpg', 'masked (1366).jpg', 'masked (1367).jpg', 'masked (1368).jpg', 'masked (1369).jpg', 'masked (1370).jpg', 'masked (1371).jpg', 'masked (1372).jpg', 'masked (1373).jpg', 'masked (1375).jpg', 'masked (1376).jpg', 'masked (1377).jpg', 'masked (1378).jpg', 'masked (1379).jpg', 'masked (1380).jpg', 'masked (1381).jpg', 'masked (1382).jpg', 'masked (1383).jpg', 'masked (1384).jpg', 'masked (1385).jpg', 'masked (1386).jpg', 'masked (1387).jpg', 'masked (1388).jpg', 'masked (1389).jpg', 'masked (1390).jpg', 'masked (1391).jpg', 'masked (1392).jpg', 'masked (1393).jpg', 'masked (1394).jpg', 'masked (1395).jpg', 'masked (1396).jpg', 'masked (1397).jpg', 'masked (1398).jpg', 'masked (1399).jpg', 'masked (1400).jpg', 'masked (1401).jpg', 'masked (1402).jpg', 'masked (1403).jpg', 'masked (1404).jpg', 'masked (1405).jpg', 'masked (1406).jpg', 'masked (1407).jpg', 'masked (1408).jpg', 'masked (1409).jpg', 'masked (1410).jpg', 'masked (1411).jpg', 'masked (1412).jpg', 'masked (1413).jpg', 'masked (1414).jpg', 'masked (1415).jpg', 'masked (1416).jpg', 'masked (1417).jpg', 'masked (1418).jpg', 'masked (1419).jpg', 'masked (1420).jpg', 'masked (1421).jpg', 'masked (1422).jpg', 'masked (1423).jpg', 'masked (1424).jpg', 'masked (1425).jpg', 'masked (1426).jpg', 'masked (1427).jpg', 'masked (1428).jpg', 'masked (1429).jpg', 'masked (1430).jpg', 'masked (1431).jpg', 'masked (1432).jpg', 'masked (1433).jpg', 'masked (1434).jpg', 'masked (1435).jpg', 'masked (1436).jpg', 'masked (1437).jpg', 'masked (1438).jpg', 'masked (1439).jpg', 'masked (1440).jpg', 'masked (1441).jpg', 'masked (1442).jpg', 'masked (1443).jpg', 'masked (1444).jpg', 'masked (1445).jpg', 'masked (1446).jpg', 'masked (1447).jpg', 'masked (1448).jpg', 'masked (1449).jpg', 'masked (1450).jpg', 'masked (1451).jpg', 'masked (1452).jpg', 'masked (1453).jpg', 'masked (1454).jpg', 'masked (1455).jpg', 'masked (1456).jpg', 'masked (1457).jpg', 'masked (1458).jpg', 'masked (1459).jpg', 'masked (1460).jpg', 'masked (1461).jpg', 'masked (1462).jpg', 'masked (1463).jpg', 'masked (1464).jpg', 'masked (1465).jpg', 'masked (1466).jpg', 'masked (1467).jpg', 'masked (1468).jpg', 'masked (1469).jpg', 'masked (1470).jpg', 'masked (1471).jpg', 'masked (1472).jpg', 'masked (1473).jpg', 'masked (1474).jpg', 'masked (1475).jpg', 'masked (1476).jpg', 'masked (1477).jpg', 'masked (1478).jpg', 'masked (1479).jpg', 'masked (1480).jpg', 'masked (1481).jpg', 'masked (1482).jpg', 'masked (1483).jpg', 'masked (1484).jpg', 'masked (1485).jpg', 'masked (1486).jpg', 'masked (1487).jpg', 'masked (1488).jpg', 'masked (1489).jpg', 'masked (1490).jpg', 'masked (1491).jpg', 'masked (1492).jpg', 'masked (1493).jpg', 'masked (1494).jpg', 'masked (1495).jpg', 'masked (1496).jpg', 'masked (1497).jpg', 'masked (1498).jpg', 'masked (1499).jpg', 'masked (1500).jpg', 'masked (1501).jpg', 'masked (1502).jpg', 'masked (1503).jpg', 'masked (1504).jpg', 'masked (1505).jpg', 'masked (1506).jpg', 'masked (1507).jpg', 'masked (1508).jpg', 'masked (1509).jpg', 'masked (1510).jpg', 'masked (1511).jpg', 'masked (1512).jpg', 'masked (1513).jpg', 'masked (1514).jpg', 'masked (1515).jpg', 'masked (1516).jpg', 'masked (1517).jpg', 'masked (1518).jpg', 'masked (1519).jpg', 'masked (1520).jpg', 'masked (1521).jpg', 'masked (1522).jpg', 'masked (1523).jpg', 'masked (1524).jpg', 'masked (1525).jpg', 'masked (1526).jpg', 'masked (1527).jpg', 'masked (1528).jpg', 'masked (1529).jpg', 'masked (1530).jpg', 'masked (1531).jpg', 'masked (1532).jpg', 'masked (1533).jpg', 'masked (1534).jpg', 'masked (1535).jpg', 'masked (1536).jpg', 'masked (1537).jpg', 'masked (1538).jpg', 'masked (1539).jpg', 'masked (1540).jpg', 'masked (1541).jpg', 'masked (1542).jpg', 'masked (1543).jpg', 'masked (1544).jpg', 'masked (1545).jpg', 'masked (1546).jpg', 'masked (1547).jpg', 'masked (1548).jpg', 'masked (1549).jpg', 'masked (1550).jpg', 'masked (1551).jpg', 'masked (1552).jpg', 'masked (1553).jpg', 'masked (1554).jpg', 'masked (1555).jpg', 'masked (1556).jpg', 'masked (1557).jpg', 'masked (1558).jpg', 'masked (1559).jpg', 'masked (1560).jpg', 'masked (1561).jpg', 'masked (1562).jpg', 'masked (1563).jpg', 'masked (1564).jpg', 'masked (1565).jpg', 'masked (1566).jpg', 'masked (1567).jpg', 'masked (1568).jpg', 'masked (1569).jpg', 'masked (1570).jpg', 'masked (1571).jpg', 'masked (1572).jpg', 'masked (1573).jpg', 'masked (1574).jpg', 'masked (1575).jpg', 'masked (1576).jpg', 'masked (1577).jpg', 'masked (1578).jpg', 'masked (1579).jpg', 'masked (1580).jpg', 'masked (1581).jpg', 'masked (1582).jpg', 'masked (1583).jpg', 'masked (1584).jpg', 'masked (1585).jpg', 'masked (1586).jpg', 'masked (1587).jpg', 'masked (1588).jpg', 'masked (1589).jpg', 'masked (1590).jpg', 'masked (1591).jpg', 'masked (1592).jpg', 'masked (1593).jpg', 'masked (1594).jpg', 'masked (1595).jpg', 'masked (1596).jpg', 'masked (1597).jpg', 'masked (1598).jpg', 'masked (1599).jpg', 'masked (1600).jpg', 'masked (1601).jpg', 'masked (1602).jpg', 'masked (1603).jpg', 'masked (1604).jpg', 'masked (1605).jpg', 'masked (1606).jpg', 'masked (1607).jpg', 'masked (1608).jpg', 'masked (1609).jpg', 'masked (1610).jpg', 'masked (1611).jpg', 'masked (1612).jpg', 'masked (1613).jpg', 'masked (1614).jpg', 'masked (1615).jpg', 'masked (1616).jpg', 'masked (1617).jpg', 'masked (1618).jpg', 'masked (1619).jpg', 'masked (1620).jpg', 'masked (1621).jpg', 'masked (1622).jpg', 'masked (1623).jpg', 'masked (1624).jpg', 'masked (1625).jpg', 'masked (1626).jpg', 'masked (1627).jpg', 'masked (1628).jpg', 'masked (1629).jpg', 'masked (1630).jpg', 'masked (1631).jpg', 'masked (1632).jpg', 'masked (1633).jpg', 'masked (1634).jpg', 'masked (1635).jpg', 'masked (1636).jpg', 'masked (1637).jpg', 'masked (1638).jpg', 'masked (1639).jpg', 'masked (1640).jpg', 'masked (1641).jpg', 'masked (1642).jpg', 'masked (1643).jpg', 'masked (1644).jpg', 'masked (1645).jpg', 'masked (1646).jpg', 'masked (1647).jpg', 'masked (1648).jpg', 'masked (1649).jpg', 'masked (1650).jpg', 'masked (1651).jpg', 'masked (1652).jpg', 'masked (1653).jpg', 'masked (1654).jpg', 'masked (1655).jpg', 'masked (1656).jpg', 'masked (1657).jpg', 'masked (1658).jpg', 'masked (1659).jpg', 'masked (1660).jpg', 'masked (1661).jpg', 'masked (1662).jpg', 'masked (1663).jpg', 'masked (1664).jpg', 'masked (1665).jpg', 'masked (1666).jpg', 'masked (1667).jpg', 'masked (1668).jpg', 'masked (1669).jpg', 'masked (1670).jpg', 'masked (1671).jpg', 'masked (1672).jpg', 'masked (1673).jpg', 'masked (1674).jpg', 'masked (1675).jpg', 'masked (1676).jpg', 'masked (1677).jpg', 'masked (1678).jpg', 'masked (1680).jpg', 'masked (1681).jpg', 'masked (1682).jpg', 'masked (1683).jpg', 'masked (1684).jpg', 'masked (1685).jpg', 'masked (1686).jpg', 'masked (1687).jpg', 'masked (1688).jpg', 'masked (1690).jpg', 'masked (1691).jpg', 'masked (1692).jpg', 'masked (1693).jpg', 'masked (1694).jpg', 'masked (1695).jpg', 'masked (1696).jpg', 'masked (1697).jpg', 'masked (1698).jpg', 'masked (1699).jpg', 'masked (1700).jpg', 'masked (1701).jpg', 'masked (1702).jpg', 'masked (1703).jpg', 'masked (1861).jpg', 'masked (1862).jpg', 'masked (1863).jpg', 'masked (1864).jpg', 'masked (1865).jpg', 'masked (1866).jpg', 'masked (1867).jpg', 'masked (1868).jpg', 'masked (1869).jpg', 'masked (1870).jpg', 'masked (1871).jpg', 'masked (1872).jpg', 'masked (1873).jpg', 'masked (1874).jpg', 'masked (1875).jpg', 'masked (1876).jpg', 'masked (1877).jpg', 'masked (1878).jpg', 'masked (1879).jpg', 'masked (1880).jpg', 'masked (1881).jpg', 'masked (1882).jpg', 'masked (1883).jpg', 'masked (1884).jpg', 'masked (1885).jpg', 'masked (1886).jpg', 'masked (1887).jpg', 'masked (1888).jpg', 'masked (1889).jpg', 'masked (1890).jpg', 'masked (1891).jpg', 'masked (1892).jpg', 'masked (1893).jpg', 'masked (1894).jpg', 'masked (1895).jpg', 'masked (1896).jpg', 'masked (1897).jpg', 'masked (1898).jpg', 'masked (1899).jpg', 'masked (1900).jpg', 'masked (1901).jpg', 'masked (1902).jpg', 'masked (1903).jpg', 'masked (1904).jpg', 'masked (1905).jpg', 'masked (1906).jpg', 'masked (1907).jpg', 'masked (1908).jpg', 'masked (1909).jpg', 'masked (1910).jpg', 'masked (1911).jpg', 'masked (1912).jpg', 'masked (1913).jpg', 'masked (1914).jpg', 'masked (1915).jpg', 'masked (3).jpg', 'masked (4).jpg', 'masked (5).jpg', 'masked (6).jpg', 'masked (7).jpg', 'masked (8).jpg', 'masked (9).jpg', 'pra1.jpg', 'pra2.jpg', 'pra3.jpg', 'prajna.jpg', 'unmasked (1250).jpg', 'unmasked (1251).jpg', 'unmasked (1252).jpg', 'unmasked (1253).jpg', 'unmasked (1255).jpg', 'unmasked (1256).jpg', 'unmasked (1257).jpg', 'unmasked (1260).jpg', 'unmasked (1261).jpg', 'unmasked (1262).jpg', 'unmasked (1263).jpg', 'unmasked (1264).jpg', 'unmasked (1265).jpg', 'unmasked (1266).jpg', 'unmasked (1267).jpg', 'unmasked (1268).jpg', 'unmasked (1269).jpg', 'unmasked (1270).jpg', 'unmasked (1271).jpg', 'unmasked (1272).jpg', 'unmasked (1274).jpg', 'unmasked (1275).jpg', 'unmasked (1276).jpg', 'unmasked (1277).jpg', 'unmasked (1278).jpg', 'unmasked (1279).jpg', 'unmasked (1280).jpg', 'unmasked (1282).jpg', 'unmasked (1285).jpg', 'unmasked (1286).jpg', 'unmasked (1287).jpg', 'unmasked (1288).jpg', 'unmasked (1289).jpg', 'unmasked (1290).jpg', 'unmasked (1291).jpg', 'unmasked (1292).jpg', 'unmasked (1293).jpg', 'unmasked (1295).jpg', 'unmasked (1297).jpg', 'unmasked (1298).jpg', 'unmasked (1299).jpg', 'unmasked (1301).jpg', 'unmasked (1302).jpg', 'unmasked (1303).jpg', 'unmasked (1304).jpg', 'unmasked (1306).jpg', 'unmasked (1307).jpg', 'unmasked (1308).jpg', 'unmasked (1309).jpg', 'unmasked (1310).jpg', 'unmasked (1311).jpg', 'unmasked (1312).jpg', 'unmasked (1313).jpg', 'unmasked (1314).jpg', 'unmasked (1315).jpg', 'unmasked (1316).jpg', 'unmasked (1317).jpg', 'unmasked (1318).jpg', 'unmasked (1319).jpg', 'unmasked (1321).jpg', 'unmasked (1322).jpg', 'unmasked (1323).jpg', 'unmasked (1324).jpg', 'unmasked (1325).jpg', 'unmasked (1326).jpg', 'unmasked (1327).jpg', 'unmasked (1328).jpg', 'unmasked (1329).jpg', 'unmasked (1330).jpg', 'unmasked (1331).jpg', 'unmasked (1332).jpg', 'unmasked (1333).jpg', 'unmasked (1334).jpg', 'unmasked (1335).jpg', 'unmasked (1336).jpg', 'unmasked (1337).jpg', 'unmasked (1338).jpg', 'unmasked (1339).jpg', 'unmasked (1340).jpg', 'unmasked (1341).jpg', 'unmasked (1342).jpg', 'unmasked (1343).jpg', 'unmasked (1344).jpg', 'unmasked (1372).jpg', 'unmasked (1374).jpg', 'unmasked (1375).jpg', 'unmasked (1376).jpg', 'unmasked (1377).jpg', 'unmasked (1378).jpg', 'unmasked (1380).jpg', 'unmasked (1381).jpg', 'unmasked (1382).jpg', 'unmasked (1383).jpg', '107-with-mask.jpg', '108-with-mask.jpg', '109-with-mask.jpg', '11-with-mask.jpg', '110-with-mask.jpg', '111-with-mask.jpg', '112-with-mask.jpg', '113-with-mask.jpg', '114-with-mask.jpg', '115-with-mask.jpg', '116-with-mask.jpg', '117-with-mask.jpg', '118-with-mask.jpg', '119-with-mask.jpg', '12-with-mask.jpg', '120-with-mask.jpg', '121-with-mask.jpg', '122-with-mask.jpg', '123-with-mask.jpg', '124-with-mask.jpg', '125-with-mask.jpg', '126-with-mask.jpg', '127-with-mask.jpg', '128-with-mask.jpg', '129-with-mask.jpg', '13-with-mask.jpg', '131-with-mask.jpg', '132-with-mask.jpg', '132.jpg', '133-with-mask.jpg', '134-with-mask.jpg', '134.jpg', '135-with-mask.jpg', '136-with-mask.jpg', '137-with-mask.jpg', '137.jpg', '138-with-mask.jpg', '138.jpg', '139-with-mask.jpg', '14-with-mask.jpg', '140-with-mask.jpg', '141-with-mask.jpg', '144-with-mask.jpg', '146-with-mask.jpg', '147-with-mask.jpg', '148-with-mask.jpg', '148.jpg', '149.jpg', '150-with-mask.jpg', '151-with-mask.jpg', '151.jpg', '152-with-mask.jpg', '153-with-mask.jpg', '154-with-mask.jpg', '155-with-mask.jpg', '156-with-mask.jpg', '157-with-mask.jpg', '158-with-mask.jpg', '159-with-mask.jpg', '159.jpg', '160-with-mask.jpg', '161-with-mask.jpg', '162-with-mask.jpg', '163-with-mask.jpg', '165-with-mask.jpg', '167-with-mask.jpg', '168-with-mask.jpg', '169-with-mask.jpg', '169.jpg', '170-with-mask.jpg', '171-with-mask.jpg', '172-with-mask.jpg', '173-with-mask.jpg', '174-with-mask.jpg', '175-with-mask.jpg', '176-with-mask.jpg', '177-with-mask.jpg', '178.jpg', '179-with-mask.jpg', '180-with-mask.jpg', '181-with-mask.jpg', '182-with-mask.jpg', '183-with-mask.jpg', '184-with-mask.jpg', '185-with-mask.jpg', '186-with-mask.jpg', '187-with-mask.jpg', '189-with-mask.jpg', '190-with-mask.jpg', '192-with-mask.jpg', '193-with-mask.jpg', '194-with-mask.jpg', '195-with-mask.jpg', '195.jpg', '196-with-mask.jpg', '197-with-mask.jpg', '198-with-mask.jpg', '2-with-mask.jpg', '200-with-mask.jpg', '201-with-mask.jpg', '201.jpg', '202-with-mask.jpg', '203-with-mask.jpg', '204-with-mask.jpg', '205-with-mask.jpg', '206-with-mask.jpg', '207-with-mask.jpg', '209-with-mask.jpg', '211-with-mask.jpg', '212-with-mask.jpg', '214-with-mask.jpg', '215-with-mask.jpg', '217-with-mask.jpg', '218-with-mask.jpg', '219-with-mask.jpg', '221-with-mask.jpg', '222-with-mask.jpg', '223-with-mask.jpg', '224-with-mask.jpg', '225-with-mask.jpg', '227-with-mask.jpg', '228-with-mask.jpg', '229-with-mask.jpg', '231-with-mask.jpg', '232-with-mask.jpg', '233-with-mask.jpg', '234-with-mask.jpg', '235-with-mask.jpg', '236-with-mask.jpg', '237-with-mask.jpg', '238-with-mask.jpg', '239-with-mask.jpg', '240-with-mask.jpg', '241-with-mask.jpg', '242-with-mask.jpg', '243-with-mask.jpg', '244-with-mask.jpg', '245-with-mask.jpg', '246-with-mask.jpg', '251-with-mask.jpg', '252-with-mask.jpg', '253-with-mask.jpg', '254-with-mask.jpg', '256-with-mask.jpg', '257-with-mask.jpg', '259-with-mask.jpg', '26-with-mask.jpg', '260-with-mask.jpg', '261-with-mask.jpg', '262-with-mask.jpg', '263-with-mask.jpg', '267-with-mask.jpg', '268-with-mask.jpg', '269-with-mask.jpg', '27-with-mask.jpg', '270-with-mask.jpg', '272-with-mask.jpg', '273-with-mask.jpg', '274-with-mask.jpg', '275-with-mask.jpg', '276-with-mask.jpg', '277-with-mask.jpg', '278-with-mask.jpg', '279-with-mask.jpg', '281-with-mask.jpg', '282-with-mask.jpg', '283-with-mask.jpg', '284-with-mask.jpg', '285-with-mask.jpg', '286-with-mask.jpg', '287-with-mask.jpg', '288-with-mask.jpg', '289-with-mask.jpg', '29-with-mask.jpg', '290-with-mask.jpg', '291-with-mask.jpg', '293-with-mask.jpg', '294-with-mask.jpg', '295-with-mask.jpg', '296-with-mask.jpg', '298-with-mask.jpg', '299-with-mask.jpg', '3-with-mask.jpg', '30-with-mask.jpg', '301-with-mask.jpg', '302-with-mask.jpg', '303-with-mask.jpg', '304-with-mask.jpg', '305-with-mask.jpg', '306-with-mask.jpg', '307-with-mask.jpg', '308-with-mask.jpg', '309-with-mask.jpg', '31-with-mask.jpg', '311-with-mask.jpg', '313-with-mask.jpg', '314-with-mask.jpg', '315-with-mask.jpg', '316-with-mask.jpg', '317-with-mask.jpg', '318-with-mask.jpg', '319-with-mask.jpg', '32-with-mask.jpg', '322-with-mask.jpg', '323-with-mask.jpg', '324-with-mask.jpg', '325-with-mask.jpg', '326-with-mask.jpg', '327-with-mask.jpg', '33-with-mask.jpg', '330-with-mask.jpg', '331-with-mask.jpg', '332-with-mask.jpg', '332.jpg', '333-with-mask.jpg', '334-with-mask.jpg', '335-with-mask.jpg', '336-with-mask.jpg', '338-with-mask.jpg', '339-with-mask.jpg', '34-with-mask.jpg', '340-with-mask.jpg', '342-with-mask.jpg', '343-with-mask.jpg', '344-with-mask.jpg', '345-with-mask.jpg', '346-with-mask.jpg', '347-with-mask.jpg', '348-with-mask.jpg', '349-with-mask.jpg', '35-with-mask.jpg', '351-with-mask.jpg', '353-with-mask.jpg', '355-with-mask.jpg', '356-with-mask.jpg', '357-with-mask.jpg', '358-with-mask.jpg', '359-with-mask.jpg', '36-with-mask.jpg', '362-with-mask.jpg', '364-with-mask.jpg', '365-with-mask.jpg', '366-with-mask.jpg', '368-with-mask.jpg', '369-with-mask.jpg', '37-with-mask.jpg', '374-with-mask.jpg', '375-with-mask.jpg', '376-with-mask.jpg', '377-with-mask.jpg', '378-with-mask.jpg', '379-with-mask.jpg', '38-with-mask.jpg', '381-with-mask.jpg', '382-with-mask.jpg', '383-with-mask.jpg', '384-with-mask.jpg', '385-with-mask.jpg', '386-with-mask.jpg', '387-with-mask.jpg', '39-with-mask.jpg', '390-with-mask.jpg', '391-with-mask.jpg', '392-with-mask.jpg', '393-with-mask.jpg', '394-with-mask.jpg', '395-with-mask.jpg', '396-with-mask.jpg', '397-with-mask.jpg', '398-with-mask.jpg', '399-with-mask.jpg', '4-with-mask.jpg', '40-with-mask.jpg', '401-with-mask.jpg', '402-with-mask.jpg', '404-with-mask.jpg', '405-with-mask.jpg', '406-with-mask.jpg', '407-with-mask.jpg', '408-with-mask.jpg', '409-with-mask.jpg', '41-with-mask.jpg', '411-with-mask.jpg', '413-with-mask.jpg', '414-with-mask.jpg', '415-with-mask.jpg', '416-with-mask.jpg', '417-with-mask.jpg', '418-with-mask.jpg', '419-with-mask.jpg', '42-with-mask.jpg', '420-with-mask.jpg', '421-with-mask.jpg', '422-with-mask.jpg', '425-with-mask.jpg', '427-with-mask.jpg', '429-with-mask.jpg', '43-with-mask.jpg', '430-with-mask.jpg', '431-with-mask.jpg', '431.jpg', '432-with-mask.jpg', '433-with-mask.jpg', '434-with-mask.jpg', '435-with-mask.jpg', '436-with-mask.jpg', '438-with-mask.jpg', '439-with-mask.jpg', '440-with-mask.jpg', '441-with-mask.jpg', '442-with-mask.jpg', '443-with-mask.jpg', '444-with-mask.jpg', '445-with-mask.jpg', '446-with-mask.jpg', '447-with-mask.jpg', '448-with-mask.jpg', '449-with-mask.jpg', '45-with-mask.jpg', '450-with-mask.jpg', '451-with-mask.jpg', '452-with-mask.jpg', '453-with-mask.jpg', '454-with-mask.jpg', '455-with-mask.jpg', '456-with-mask.jpg', '457-with-mask.jpg', '458-with-mask.jpg', '459-with-mask.jpg', '46-with-mask.jpg', '460-with-mask.jpg', '461-with-mask.jpg', '462-with-mask.jpg', '463-with-mask.jpg', '464-with-mask.jpg', '466-with-mask.jpg', '467-with-mask.jpg', '47-with-mask.jpg', '471-with-mask.jpg', '472-with-mask.jpg', '473-with-mask.jpg', '474-with-mask.jpg', '475-with-mask.jpg', '476-with-mask.jpg', '477-with-mask.jpg', '478-with-mask.jpg', '479-with-mask.jpg', '48-with-mask.jpg', '480-with-mask.jpg', '481-with-mask.jpg', '49-with-mask.jpg', '49.jpg', '5-with-mask.jpg', '50-with-mask.jpg', '51-with-mask.jpg', '52-with-mask.jpg', '53-with-mask.jpg', '56-with-mask.jpg', '57-with-mask.jpg', '59-with-mask.jpg', '6-with-mask.jpg', '61-with-mask.jpg', '62-with-mask.jpg', '63.jpg', '64-with-mask.jpg', '65-with-mask.jpg', '67-with-mask.jpg', '68-with-mask.jpg', '7-with-mask.jpg', '70-with-mask.jpg', '71-with-mask.jpg', '72-with-mask.jpg', '73-with-mask.jpg', '74-with-mask.jpg', '75-with-mask.jpg', '76-with-mask.jpg', '77-with-mask.jpg', '78-with-mask.jpg', '79-with-mask.jpg', '8-with-mask.jpg', '80-with-mask.jpg', '81-with-mask.jpg', '82-with-mask.jpg', '83-with-mask.jpg', '84-with-mask.jpg', '85-with-mask.jpg', '86-with-mask.jpg', '88-with-mask.jpg', '89-with-mask.jpg', '9-with-mask.jpg', '91-with-mask.jpg', '92-with-mask.jpg', '93-with-mask.jpg', '94-with-mask.jpg', '96-with-mask.jpg', '97-with-mask.jpg', '98-with-mask.jpg', '99-with-mask.jpg', 'masked (10).jpg', 'masked (11).jpg', 'masked (1257).jpg', 'masked (1258).jpg', 'masked (1259).jpg', 'masked (1260).jpg', 'masked (1261).jpg', 'masked (1263).jpg', 'masked (1264).jpg', 'masked (1265).jpg', 'masked (1266).jpg', 'masked (1267).jpg', 'masked (1268).jpg', 'masked (1269).jpg', 'masked (1270).jpg', 'masked (1271).jpg', 'masked (1272).jpg', 'masked (1273).jpg', 'masked (1274).jpg', 'masked (1275).jpg', 'masked (1276).jpg', 'masked (1277).jpg', 'masked (1278).jpg', 'masked (1279).jpg', 'masked (1280).jpg', 'masked (1281).jpg', 'masked (1282).jpg', 'masked (1283).jpg', 'masked (1284).jpg', 'masked (1285).jpg', 'masked (1286).jpg', 'masked (1287).jpg', 'masked (1288).jpg', 'masked (1289).jpg', 'masked (1290).jpg', 'masked (1291).jpg', 'masked (1292).jpg', 'masked (1293).jpg', 'masked (1296).jpg', 'masked (1297).jpg', 'masked (1298).jpg', 'masked (1299).jpg', 'masked (1300).jpg', 'masked (1301).jpg', 'masked (1302).jpg', 'masked (1303).jpg', 'masked (1304).jpg', 'masked (1305).jpg', 'masked (1306).jpg', 'masked (1307).jpg', 'masked (1308).jpg', 'masked (1309).jpg', 'masked (1310).jpg', 'masked (1311).jpg', 'masked (1312).jpg', 'masked (1313).jpg', 'masked (1314).jpg', 'masked (1315).jpg', 'masked (1316).jpg', 'masked (1317).jpg', 'masked (1318).jpg', 'masked (1319).jpg', 'masked (1320).jpg', 'masked (1321).jpg', 'masked (1322).jpg', 'masked (1323).jpg', 'masked (1324).jpg', 'masked (1325).jpg', 'masked (1326).jpg', 'masked (1327).jpg', 'masked (1328).jpg', 'masked (1329).jpg', 'masked (1330).jpg', 'masked (1331).jpg', 'masked (1332).jpg', 'masked (1333).jpg', 'masked (1334).jpg', 'masked (1335).jpg', 'masked (1336).jpg', 'masked (1337).jpg', 'masked (1338).jpg', 'masked (1339).jpg', 'masked (1340).jpg', 'masked (1341).jpg', 'masked (1342).jpg', 'masked (1343).jpg', 'masked (1344).jpg', 'masked (1345).jpg', 'masked (1346).jpg', 'masked (1347).jpg', 'masked (1348).jpg', 'masked (1349).jpg', 'masked (1350).jpg', 'masked (1351).jpg', 'masked (1352).jpg', 'masked (1353).jpg', 'masked (1354).jpg', 'masked (1355).jpg', 'masked (1356).jpg', 'masked (1357).jpg', 'masked (1358).jpg', 'masked (1359).jpg', '0-with-mask.jpg', '0.jpg', '1-with-mask.jpg', '10-with-mask.jpg', '100-with-mask.jpg', '101-with-mask.jpg', '103-with-mask.jpg', '104-with-mask.jpg', '105-with-mask.jpg', '106-with-mask.jpg']
In [7]:
def masked_condition(file):
  #masked_condition='with-mask' in file or 'with_mask' in file or 'with_maska' in file or 'with_maskb' in file or 'masked' in file and not 'unmasked' in file or 'pra' in file
  file_exts=['with-mask','with_mask','with_maska','with_maskb','masked','pra']
  msk_condition=False
  for cond in file_exts:
    msk_condition= msk_condition or cond in file
  msk_condition=msk_condition and not 'unmasked' in file
  return (msk_condition)
In [8]:
index=0
masked=[]
unmasked=[]
target=np.zeros(len(file_names),dtype=int)
for file in file_names:
  if masked_condition(file):
    masked.append(file)
    target[index]=1
  else:
    unmasked.append(file)
  index+=1
In [9]:
print (len(masked), 'images have masks')
print (len(unmasked), 'images do not have masks')
imb=round(100*len(masked)/len(file_names))
print ('imbalance level-> mask:unmasked :: ', imb, ":", 100-imb)
1049 images have masks
461 images do not have masks
imbalance level-> mask:unmasked ::  69 : 31
In [10]:
print (masked)
['with_mask (1).jpg', 'with_mask (10).jpg', 'with_mask (100).jpg', 'with_mask (101).jpg', 'with_mask (102).jpg', 'with_mask (103).jpg', 'with_mask (104).jpg', 'with_mask (105).jpg', 'with_mask (11).jpg', 'with_mask (12).jpg', 'with_mask (13).jpg', 'with_mask (14).jpg', 'with_mask (15).jpg', 'with_mask (16).jpg', 'with_mask (17).jpg', 'with_mask (18).jpg', 'with_mask (19).jpg', 'with_mask (2).jpg', 'with_mask (20).jpg', 'with_mask (21).jpg', 'with_mask (22).jpg', 'with_mask (23).jpg', 'with_mask (24).jpg', 'with_mask (25).jpg', 'with_mask (26).jpg', 'with_mask (27).jpg', 'with_mask (28).jpg', 'with_mask (29).jpg', 'with_mask (3).jpg', 'with_mask (30).jpg', 'with_mask (31).jpg', 'with_mask (32).jpg', 'with_mask (33).jpg', 'with_mask (34).jpg', 'with_mask (35).jpg', 'with_mask (36).jpg', 'with_mask (37).jpg', 'with_mask (38).jpg', 'with_mask (39).jpg', 'with_mask (4).jpg', 'with_mask (40).jpg', 'with_mask (41).jpg', 'with_mask (42).jpg', 'with_mask (43).jpg', 'with_mask (44).jpg', 'with_mask (45).jpg', 'with_mask (46).jpg', 'with_mask (47).jpg', 'with_mask (48).jpg', 'with_mask (49).jpg', 'with_mask (5).jpg', 'with_mask (50).jpg', 'with_mask (51).jpg', 'with_mask (52).jpg', 'with_mask (53).jpg', 'with_mask (54).jpg', 'with_mask (55).jpg', 'with_mask (56).jpg', 'with_mask (57).jpg', 'with_mask (58).jpg', 'with_mask (59).jpg', 'with_mask (6).jpg', 'with_mask (60).jpg', 'with_mask (61).jpg', 'with_mask (62).jpg', 'with_mask (63).jpg', 'with_mask (64).jpg', 'with_mask (65).jpg', 'with_mask (66).jpg', 'with_mask (67).jpg', 'with_mask (68).jpg', 'with_mask (69).jpg', 'with_mask (7).jpg', 'with_mask (70).jpg', 'with_mask (71).jpg', 'with_mask (72).jpg', 'with_mask (73).jpg', 'with_mask (74).jpg', 'with_mask (75).jpg', 'with_mask (76).jpg', 'with_mask (77).jpg', 'with_mask (78).jpg', 'with_mask (79).jpg', 'with_mask (8).jpg', 'with_mask (80).jpg', 'with_mask (81).jpg', 'with_mask (82).jpg', 'with_mask (83).jpg', 'with_mask (84).jpg', 'with_mask (85).jpg', 'with_mask (86).jpg', 'with_mask (87).jpg', 'with_mask (88).jpg', 'with_mask (89).jpg', 'with_mask (9).jpg', 'with_mask (90).jpg', 'with_mask (91).jpg', 'with_mask (92).jpg', 'with_mask (93).jpg', 'with_mask (94).jpg', 'with_mask (95).jpg', 'with_mask (96).jpg', 'with_mask (97).jpg', 'with_mask (98).jpg', 'with_mask (99).jpg', 'with_maska (1).jpg', 'with_maska (10).jpg', 'with_maska (11).jpg', 'with_maska (12).jpg', 'with_maska (13).jpg', 'with_maska (14).jpg', 'with_maska (15).jpg', 'with_maska (16).jpg', 'with_maska (17).jpg', 'with_maska (18).jpg', 'with_maska (19).jpg', 'with_maska (2).jpg', 'with_maska (20).jpg', 'with_maska (21).jpg', 'with_maska (22).jpg', 'with_maska (23).jpg', 'with_maska (24).jpg', 'with_maska (25).jpg', 'with_maska (26).jpg', 'with_maska (27).jpg', 'with_maska (28).jpg', 'with_maska (29).jpg', 'with_maska (3).jpg', 'with_maska (4).jpg', 'with_maska (5).jpg', 'with_maska (6).jpg', 'with_maska (7).jpg', 'with_maska (8).jpg', 'with_maska (9).jpg', 'with_maskb (1).jpg', 'with_maskb (10).jpg', 'with_maskb (11).jpg', 'with_maskb (12).jpg', 'with_maskb (13).jpg', 'with_maskb (14).jpg', 'with_maskb (15).jpg', 'with_maskb (2).jpg', 'with_maskb (3).jpg', 'with_maskb (4).jpg', 'with_maskb (5).jpg', 'with_maskb (6).jpg', 'with_maskb (7).jpg', 'with_maskb (8).jpg', 'with_maskb (9).jpg', 'masked (1360).jpg', 'masked (1361).jpg', 'masked (1362).jpg', 'masked (1363).jpg', 'masked (1364).jpg', 'masked (1365).jpg', 'masked (1366).jpg', 'masked (1367).jpg', 'masked (1368).jpg', 'masked (1369).jpg', 'masked (1370).jpg', 'masked (1371).jpg', 'masked (1372).jpg', 'masked (1373).jpg', 'masked (1375).jpg', 'masked (1376).jpg', 'masked (1377).jpg', 'masked (1378).jpg', 'masked (1379).jpg', 'masked (1380).jpg', 'masked (1381).jpg', 'masked (1382).jpg', 'masked (1383).jpg', 'masked (1384).jpg', 'masked (1385).jpg', 'masked (1386).jpg', 'masked (1387).jpg', 'masked (1388).jpg', 'masked (1389).jpg', 'masked (1390).jpg', 'masked (1391).jpg', 'masked (1392).jpg', 'masked (1393).jpg', 'masked (1394).jpg', 'masked (1395).jpg', 'masked (1396).jpg', 'masked (1397).jpg', 'masked (1398).jpg', 'masked (1399).jpg', 'masked (1400).jpg', 'masked (1401).jpg', 'masked (1402).jpg', 'masked (1403).jpg', 'masked (1404).jpg', 'masked (1405).jpg', 'masked (1406).jpg', 'masked (1407).jpg', 'masked (1408).jpg', 'masked (1409).jpg', 'masked (1410).jpg', 'masked (1411).jpg', 'masked (1412).jpg', 'masked (1413).jpg', 'masked (1414).jpg', 'masked (1415).jpg', 'masked (1416).jpg', 'masked (1417).jpg', 'masked (1418).jpg', 'masked (1419).jpg', 'masked (1420).jpg', 'masked (1421).jpg', 'masked (1422).jpg', 'masked (1423).jpg', 'masked (1424).jpg', 'masked (1425).jpg', 'masked (1426).jpg', 'masked (1427).jpg', 'masked (1428).jpg', 'masked (1429).jpg', 'masked (1430).jpg', 'masked (1431).jpg', 'masked (1432).jpg', 'masked (1433).jpg', 'masked (1434).jpg', 'masked (1435).jpg', 'masked (1436).jpg', 'masked (1437).jpg', 'masked (1438).jpg', 'masked (1439).jpg', 'masked (1440).jpg', 'masked (1441).jpg', 'masked (1442).jpg', 'masked (1443).jpg', 'masked (1444).jpg', 'masked (1445).jpg', 'masked (1446).jpg', 'masked (1447).jpg', 'masked (1448).jpg', 'masked (1449).jpg', 'masked (1450).jpg', 'masked (1451).jpg', 'masked (1452).jpg', 'masked (1453).jpg', 'masked (1454).jpg', 'masked (1455).jpg', 'masked (1456).jpg', 'masked (1457).jpg', 'masked (1458).jpg', 'masked (1459).jpg', 'masked (1460).jpg', 'masked (1461).jpg', 'masked (1462).jpg', 'masked (1463).jpg', 'masked (1464).jpg', 'masked (1465).jpg', 'masked (1466).jpg', 'masked (1467).jpg', 'masked (1468).jpg', 'masked (1469).jpg', 'masked (1470).jpg', 'masked (1471).jpg', 'masked (1472).jpg', 'masked (1473).jpg', 'masked (1474).jpg', 'masked (1475).jpg', 'masked (1476).jpg', 'masked (1477).jpg', 'masked (1478).jpg', 'masked (1479).jpg', 'masked (1480).jpg', 'masked (1481).jpg', 'masked (1482).jpg', 'masked (1483).jpg', 'masked (1484).jpg', 'masked (1485).jpg', 'masked (1486).jpg', 'masked (1487).jpg', 'masked (1488).jpg', 'masked (1489).jpg', 'masked (1490).jpg', 'masked (1491).jpg', 'masked (1492).jpg', 'masked (1493).jpg', 'masked (1494).jpg', 'masked (1495).jpg', 'masked (1496).jpg', 'masked (1497).jpg', 'masked (1498).jpg', 'masked (1499).jpg', 'masked (1500).jpg', 'masked (1501).jpg', 'masked (1502).jpg', 'masked (1503).jpg', 'masked (1504).jpg', 'masked (1505).jpg', 'masked (1506).jpg', 'masked (1507).jpg', 'masked (1508).jpg', 'masked (1509).jpg', 'masked (1510).jpg', 'masked (1511).jpg', 'masked (1512).jpg', 'masked (1513).jpg', 'masked (1514).jpg', 'masked (1515).jpg', 'masked (1516).jpg', 'masked (1517).jpg', 'masked (1518).jpg', 'masked (1519).jpg', 'masked (1520).jpg', 'masked (1521).jpg', 'masked (1522).jpg', 'masked (1523).jpg', 'masked (1524).jpg', 'masked (1525).jpg', 'masked (1526).jpg', 'masked (1527).jpg', 'masked (1528).jpg', 'masked (1529).jpg', 'masked (1530).jpg', 'masked (1531).jpg', 'masked (1532).jpg', 'masked (1533).jpg', 'masked (1534).jpg', 'masked (1535).jpg', 'masked (1536).jpg', 'masked (1537).jpg', 'masked (1538).jpg', 'masked (1539).jpg', 'masked (1540).jpg', 'masked (1541).jpg', 'masked (1542).jpg', 'masked (1543).jpg', 'masked (1544).jpg', 'masked (1545).jpg', 'masked (1546).jpg', 'masked (1547).jpg', 'masked (1548).jpg', 'masked (1549).jpg', 'masked (1550).jpg', 'masked (1551).jpg', 'masked (1552).jpg', 'masked (1553).jpg', 'masked (1554).jpg', 'masked (1555).jpg', 'masked (1556).jpg', 'masked (1557).jpg', 'masked (1558).jpg', 'masked (1559).jpg', 'masked (1560).jpg', 'masked (1561).jpg', 'masked (1562).jpg', 'masked (1563).jpg', 'masked (1564).jpg', 'masked (1565).jpg', 'masked (1566).jpg', 'masked (1567).jpg', 'masked (1568).jpg', 'masked (1569).jpg', 'masked (1570).jpg', 'masked (1571).jpg', 'masked (1572).jpg', 'masked (1573).jpg', 'masked (1574).jpg', 'masked (1575).jpg', 'masked (1576).jpg', 'masked (1577).jpg', 'masked (1578).jpg', 'masked (1579).jpg', 'masked (1580).jpg', 'masked (1581).jpg', 'masked (1582).jpg', 'masked (1583).jpg', 'masked (1584).jpg', 'masked (1585).jpg', 'masked (1586).jpg', 'masked (1587).jpg', 'masked (1588).jpg', 'masked (1589).jpg', 'masked (1590).jpg', 'masked (1591).jpg', 'masked (1592).jpg', 'masked (1593).jpg', 'masked (1594).jpg', 'masked (1595).jpg', 'masked (1596).jpg', 'masked (1597).jpg', 'masked (1598).jpg', 'masked (1599).jpg', 'masked (1600).jpg', 'masked (1601).jpg', 'masked (1602).jpg', 'masked (1603).jpg', 'masked (1604).jpg', 'masked (1605).jpg', 'masked (1606).jpg', 'masked (1607).jpg', 'masked (1608).jpg', 'masked (1609).jpg', 'masked (1610).jpg', 'masked (1611).jpg', 'masked (1612).jpg', 'masked (1613).jpg', 'masked (1614).jpg', 'masked (1615).jpg', 'masked (1616).jpg', 'masked (1617).jpg', 'masked (1618).jpg', 'masked (1619).jpg', 'masked (1620).jpg', 'masked (1621).jpg', 'masked (1622).jpg', 'masked (1623).jpg', 'masked (1624).jpg', 'masked (1625).jpg', 'masked (1626).jpg', 'masked (1627).jpg', 'masked (1628).jpg', 'masked (1629).jpg', 'masked (1630).jpg', 'masked (1631).jpg', 'masked (1632).jpg', 'masked (1633).jpg', 'masked (1634).jpg', 'masked (1635).jpg', 'masked (1636).jpg', 'masked (1637).jpg', 'masked (1638).jpg', 'masked (1639).jpg', 'masked (1640).jpg', 'masked (1641).jpg', 'masked (1642).jpg', 'masked (1643).jpg', 'masked (1644).jpg', 'masked (1645).jpg', 'masked (1646).jpg', 'masked (1647).jpg', 'masked (1648).jpg', 'masked (1649).jpg', 'masked (1650).jpg', 'masked (1651).jpg', 'masked (1652).jpg', 'masked (1653).jpg', 'masked (1654).jpg', 'masked (1655).jpg', 'masked (1656).jpg', 'masked (1657).jpg', 'masked (1658).jpg', 'masked (1659).jpg', 'masked (1660).jpg', 'masked (1661).jpg', 'masked (1662).jpg', 'masked (1663).jpg', 'masked (1664).jpg', 'masked (1665).jpg', 'masked (1666).jpg', 'masked (1667).jpg', 'masked (1668).jpg', 'masked (1669).jpg', 'masked (1670).jpg', 'masked (1671).jpg', 'masked (1672).jpg', 'masked (1673).jpg', 'masked (1674).jpg', 'masked (1675).jpg', 'masked (1676).jpg', 'masked (1677).jpg', 'masked (1678).jpg', 'masked (1680).jpg', 'masked (1681).jpg', 'masked (1682).jpg', 'masked (1683).jpg', 'masked (1684).jpg', 'masked (1685).jpg', 'masked (1686).jpg', 'masked (1687).jpg', 'masked (1688).jpg', 'masked (1690).jpg', 'masked (1691).jpg', 'masked (1692).jpg', 'masked (1693).jpg', 'masked (1694).jpg', 'masked (1695).jpg', 'masked (1696).jpg', 'masked (1697).jpg', 'masked (1698).jpg', 'masked (1699).jpg', 'masked (1700).jpg', 'masked (1701).jpg', 'masked (1702).jpg', 'masked (1703).jpg', 'masked (1861).jpg', 'masked (1862).jpg', 'masked (1863).jpg', 'masked (1864).jpg', 'masked (1865).jpg', 'masked (1866).jpg', 'masked (1867).jpg', 'masked (1868).jpg', 'masked (1869).jpg', 'masked (1870).jpg', 'masked (1871).jpg', 'masked (1872).jpg', 'masked (1873).jpg', 'masked (1874).jpg', 'masked (1875).jpg', 'masked (1876).jpg', 'masked (1877).jpg', 'masked (1878).jpg', 'masked (1879).jpg', 'masked (1880).jpg', 'masked (1881).jpg', 'masked (1882).jpg', 'masked (1883).jpg', 'masked (1884).jpg', 'masked (1885).jpg', 'masked (1886).jpg', 'masked (1887).jpg', 'masked (1888).jpg', 'masked (1889).jpg', 'masked (1890).jpg', 'masked (1891).jpg', 'masked (1892).jpg', 'masked (1893).jpg', 'masked (1894).jpg', 'masked (1895).jpg', 'masked (1896).jpg', 'masked (1897).jpg', 'masked (1898).jpg', 'masked (1899).jpg', 'masked (1900).jpg', 'masked (1901).jpg', 'masked (1902).jpg', 'masked (1903).jpg', 'masked (1904).jpg', 'masked (1905).jpg', 'masked (1906).jpg', 'masked (1907).jpg', 'masked (1908).jpg', 'masked (1909).jpg', 'masked (1910).jpg', 'masked (1911).jpg', 'masked (1912).jpg', 'masked (1913).jpg', 'masked (1914).jpg', 'masked (1915).jpg', 'masked (3).jpg', 'masked (4).jpg', 'masked (5).jpg', 'masked (6).jpg', 'masked (7).jpg', 'masked (8).jpg', 'masked (9).jpg', 'pra1.jpg', 'pra2.jpg', 'pra3.jpg', 'prajna.jpg', '107-with-mask.jpg', '108-with-mask.jpg', '109-with-mask.jpg', '11-with-mask.jpg', '110-with-mask.jpg', '111-with-mask.jpg', '112-with-mask.jpg', '113-with-mask.jpg', '114-with-mask.jpg', '115-with-mask.jpg', '116-with-mask.jpg', '117-with-mask.jpg', '118-with-mask.jpg', '119-with-mask.jpg', '12-with-mask.jpg', '120-with-mask.jpg', '121-with-mask.jpg', '122-with-mask.jpg', '123-with-mask.jpg', '124-with-mask.jpg', '125-with-mask.jpg', '126-with-mask.jpg', '127-with-mask.jpg', '128-with-mask.jpg', '129-with-mask.jpg', '13-with-mask.jpg', '131-with-mask.jpg', '132-with-mask.jpg', '133-with-mask.jpg', '134-with-mask.jpg', '135-with-mask.jpg', '136-with-mask.jpg', '137-with-mask.jpg', '138-with-mask.jpg', '139-with-mask.jpg', '14-with-mask.jpg', '140-with-mask.jpg', '141-with-mask.jpg', '144-with-mask.jpg', '146-with-mask.jpg', '147-with-mask.jpg', '148-with-mask.jpg', '150-with-mask.jpg', '151-with-mask.jpg', '152-with-mask.jpg', '153-with-mask.jpg', '154-with-mask.jpg', '155-with-mask.jpg', '156-with-mask.jpg', '157-with-mask.jpg', '158-with-mask.jpg', '159-with-mask.jpg', '160-with-mask.jpg', '161-with-mask.jpg', '162-with-mask.jpg', '163-with-mask.jpg', '165-with-mask.jpg', '167-with-mask.jpg', '168-with-mask.jpg', '169-with-mask.jpg', '170-with-mask.jpg', '171-with-mask.jpg', '172-with-mask.jpg', '173-with-mask.jpg', '174-with-mask.jpg', '175-with-mask.jpg', '176-with-mask.jpg', '177-with-mask.jpg', '179-with-mask.jpg', '180-with-mask.jpg', '181-with-mask.jpg', '182-with-mask.jpg', '183-with-mask.jpg', '184-with-mask.jpg', '185-with-mask.jpg', '186-with-mask.jpg', '187-with-mask.jpg', '189-with-mask.jpg', '190-with-mask.jpg', '192-with-mask.jpg', '193-with-mask.jpg', '194-with-mask.jpg', '195-with-mask.jpg', '196-with-mask.jpg', '197-with-mask.jpg', '198-with-mask.jpg', '2-with-mask.jpg', '200-with-mask.jpg', '201-with-mask.jpg', '202-with-mask.jpg', '203-with-mask.jpg', '204-with-mask.jpg', '205-with-mask.jpg', '206-with-mask.jpg', '207-with-mask.jpg', '209-with-mask.jpg', '211-with-mask.jpg', '212-with-mask.jpg', '214-with-mask.jpg', '215-with-mask.jpg', '217-with-mask.jpg', '218-with-mask.jpg', '219-with-mask.jpg', '221-with-mask.jpg', '222-with-mask.jpg', '223-with-mask.jpg', '224-with-mask.jpg', '225-with-mask.jpg', '227-with-mask.jpg', '228-with-mask.jpg', '229-with-mask.jpg', '231-with-mask.jpg', '232-with-mask.jpg', '233-with-mask.jpg', '234-with-mask.jpg', '235-with-mask.jpg', '236-with-mask.jpg', '237-with-mask.jpg', '238-with-mask.jpg', '239-with-mask.jpg', '240-with-mask.jpg', '241-with-mask.jpg', '242-with-mask.jpg', '243-with-mask.jpg', '244-with-mask.jpg', '245-with-mask.jpg', '246-with-mask.jpg', '251-with-mask.jpg', '252-with-mask.jpg', '253-with-mask.jpg', '254-with-mask.jpg', '256-with-mask.jpg', '257-with-mask.jpg', '259-with-mask.jpg', '26-with-mask.jpg', '260-with-mask.jpg', '261-with-mask.jpg', '262-with-mask.jpg', '263-with-mask.jpg', '267-with-mask.jpg', '268-with-mask.jpg', '269-with-mask.jpg', '27-with-mask.jpg', '270-with-mask.jpg', '272-with-mask.jpg', '273-with-mask.jpg', '274-with-mask.jpg', '275-with-mask.jpg', '276-with-mask.jpg', '277-with-mask.jpg', '278-with-mask.jpg', '279-with-mask.jpg', '281-with-mask.jpg', '282-with-mask.jpg', '283-with-mask.jpg', '284-with-mask.jpg', '285-with-mask.jpg', '286-with-mask.jpg', '287-with-mask.jpg', '288-with-mask.jpg', '289-with-mask.jpg', '29-with-mask.jpg', '290-with-mask.jpg', '291-with-mask.jpg', '293-with-mask.jpg', '294-with-mask.jpg', '295-with-mask.jpg', '296-with-mask.jpg', '298-with-mask.jpg', '299-with-mask.jpg', '3-with-mask.jpg', '30-with-mask.jpg', '301-with-mask.jpg', '302-with-mask.jpg', '303-with-mask.jpg', '304-with-mask.jpg', '305-with-mask.jpg', '306-with-mask.jpg', '307-with-mask.jpg', '308-with-mask.jpg', '309-with-mask.jpg', '31-with-mask.jpg', '311-with-mask.jpg', '313-with-mask.jpg', '314-with-mask.jpg', '315-with-mask.jpg', '316-with-mask.jpg', '317-with-mask.jpg', '318-with-mask.jpg', '319-with-mask.jpg', '32-with-mask.jpg', '322-with-mask.jpg', '323-with-mask.jpg', '324-with-mask.jpg', '325-with-mask.jpg', '326-with-mask.jpg', '327-with-mask.jpg', '33-with-mask.jpg', '330-with-mask.jpg', '331-with-mask.jpg', '332-with-mask.jpg', '333-with-mask.jpg', '334-with-mask.jpg', '335-with-mask.jpg', '336-with-mask.jpg', '338-with-mask.jpg', '339-with-mask.jpg', '34-with-mask.jpg', '340-with-mask.jpg', '342-with-mask.jpg', '343-with-mask.jpg', '344-with-mask.jpg', '345-with-mask.jpg', '346-with-mask.jpg', '347-with-mask.jpg', '348-with-mask.jpg', '349-with-mask.jpg', '35-with-mask.jpg', '351-with-mask.jpg', '353-with-mask.jpg', '355-with-mask.jpg', '356-with-mask.jpg', '357-with-mask.jpg', '358-with-mask.jpg', '359-with-mask.jpg', '36-with-mask.jpg', '362-with-mask.jpg', '364-with-mask.jpg', '365-with-mask.jpg', '366-with-mask.jpg', '368-with-mask.jpg', '369-with-mask.jpg', '37-with-mask.jpg', '374-with-mask.jpg', '375-with-mask.jpg', '376-with-mask.jpg', '377-with-mask.jpg', '378-with-mask.jpg', '379-with-mask.jpg', '38-with-mask.jpg', '381-with-mask.jpg', '382-with-mask.jpg', '383-with-mask.jpg', '384-with-mask.jpg', '385-with-mask.jpg', '386-with-mask.jpg', '387-with-mask.jpg', '39-with-mask.jpg', '390-with-mask.jpg', '391-with-mask.jpg', '392-with-mask.jpg', '393-with-mask.jpg', '394-with-mask.jpg', '395-with-mask.jpg', '396-with-mask.jpg', '397-with-mask.jpg', '398-with-mask.jpg', '399-with-mask.jpg', '4-with-mask.jpg', '40-with-mask.jpg', '401-with-mask.jpg', '402-with-mask.jpg', '404-with-mask.jpg', '405-with-mask.jpg', '406-with-mask.jpg', '407-with-mask.jpg', '408-with-mask.jpg', '409-with-mask.jpg', '41-with-mask.jpg', '411-with-mask.jpg', '413-with-mask.jpg', '414-with-mask.jpg', '415-with-mask.jpg', '416-with-mask.jpg', '417-with-mask.jpg', '418-with-mask.jpg', '419-with-mask.jpg', '42-with-mask.jpg', '420-with-mask.jpg', '421-with-mask.jpg', '422-with-mask.jpg', '425-with-mask.jpg', '427-with-mask.jpg', '429-with-mask.jpg', '43-with-mask.jpg', '430-with-mask.jpg', '431-with-mask.jpg', '432-with-mask.jpg', '433-with-mask.jpg', '434-with-mask.jpg', '435-with-mask.jpg', '436-with-mask.jpg', '438-with-mask.jpg', '439-with-mask.jpg', '440-with-mask.jpg', '441-with-mask.jpg', '442-with-mask.jpg', '443-with-mask.jpg', '444-with-mask.jpg', '445-with-mask.jpg', '446-with-mask.jpg', '447-with-mask.jpg', '448-with-mask.jpg', '449-with-mask.jpg', '45-with-mask.jpg', '450-with-mask.jpg', '451-with-mask.jpg', '452-with-mask.jpg', '453-with-mask.jpg', '454-with-mask.jpg', '455-with-mask.jpg', '456-with-mask.jpg', '457-with-mask.jpg', '458-with-mask.jpg', '459-with-mask.jpg', '46-with-mask.jpg', '460-with-mask.jpg', '461-with-mask.jpg', '462-with-mask.jpg', '463-with-mask.jpg', '464-with-mask.jpg', '466-with-mask.jpg', '467-with-mask.jpg', '47-with-mask.jpg', '471-with-mask.jpg', '472-with-mask.jpg', '473-with-mask.jpg', '474-with-mask.jpg', '475-with-mask.jpg', '476-with-mask.jpg', '477-with-mask.jpg', '478-with-mask.jpg', '479-with-mask.jpg', '48-with-mask.jpg', '480-with-mask.jpg', '481-with-mask.jpg', '49-with-mask.jpg', '5-with-mask.jpg', '50-with-mask.jpg', '51-with-mask.jpg', '52-with-mask.jpg', '53-with-mask.jpg', '56-with-mask.jpg', '57-with-mask.jpg', '59-with-mask.jpg', '6-with-mask.jpg', '61-with-mask.jpg', '62-with-mask.jpg', '64-with-mask.jpg', '65-with-mask.jpg', '67-with-mask.jpg', '68-with-mask.jpg', '7-with-mask.jpg', '70-with-mask.jpg', '71-with-mask.jpg', '72-with-mask.jpg', '73-with-mask.jpg', '74-with-mask.jpg', '75-with-mask.jpg', '76-with-mask.jpg', '77-with-mask.jpg', '78-with-mask.jpg', '79-with-mask.jpg', '8-with-mask.jpg', '80-with-mask.jpg', '81-with-mask.jpg', '82-with-mask.jpg', '83-with-mask.jpg', '84-with-mask.jpg', '85-with-mask.jpg', '86-with-mask.jpg', '88-with-mask.jpg', '89-with-mask.jpg', '9-with-mask.jpg', '91-with-mask.jpg', '92-with-mask.jpg', '93-with-mask.jpg', '94-with-mask.jpg', '96-with-mask.jpg', '97-with-mask.jpg', '98-with-mask.jpg', '99-with-mask.jpg', 'masked (10).jpg', 'masked (11).jpg', 'masked (1257).jpg', 'masked (1258).jpg', 'masked (1259).jpg', 'masked (1260).jpg', 'masked (1261).jpg', 'masked (1263).jpg', 'masked (1264).jpg', 'masked (1265).jpg', 'masked (1266).jpg', 'masked (1267).jpg', 'masked (1268).jpg', 'masked (1269).jpg', 'masked (1270).jpg', 'masked (1271).jpg', 'masked (1272).jpg', 'masked (1273).jpg', 'masked (1274).jpg', 'masked (1275).jpg', 'masked (1276).jpg', 'masked (1277).jpg', 'masked (1278).jpg', 'masked (1279).jpg', 'masked (1280).jpg', 'masked (1281).jpg', 'masked (1282).jpg', 'masked (1283).jpg', 'masked (1284).jpg', 'masked (1285).jpg', 'masked (1286).jpg', 'masked (1287).jpg', 'masked (1288).jpg', 'masked (1289).jpg', 'masked (1290).jpg', 'masked (1291).jpg', 'masked (1292).jpg', 'masked (1293).jpg', 'masked (1296).jpg', 'masked (1297).jpg', 'masked (1298).jpg', 'masked (1299).jpg', 'masked (1300).jpg', 'masked (1301).jpg', 'masked (1302).jpg', 'masked (1303).jpg', 'masked (1304).jpg', 'masked (1305).jpg', 'masked (1306).jpg', 'masked (1307).jpg', 'masked (1308).jpg', 'masked (1309).jpg', 'masked (1310).jpg', 'masked (1311).jpg', 'masked (1312).jpg', 'masked (1313).jpg', 'masked (1314).jpg', 'masked (1315).jpg', 'masked (1316).jpg', 'masked (1317).jpg', 'masked (1318).jpg', 'masked (1319).jpg', 'masked (1320).jpg', 'masked (1321).jpg', 'masked (1322).jpg', 'masked (1323).jpg', 'masked (1324).jpg', 'masked (1325).jpg', 'masked (1326).jpg', 'masked (1327).jpg', 'masked (1328).jpg', 'masked (1329).jpg', 'masked (1330).jpg', 'masked (1331).jpg', 'masked (1332).jpg', 'masked (1333).jpg', 'masked (1334).jpg', 'masked (1335).jpg', 'masked (1336).jpg', 'masked (1337).jpg', 'masked (1338).jpg', 'masked (1339).jpg', 'masked (1340).jpg', 'masked (1341).jpg', 'masked (1342).jpg', 'masked (1343).jpg', 'masked (1344).jpg', 'masked (1345).jpg', 'masked (1346).jpg', 'masked (1347).jpg', 'masked (1348).jpg', 'masked (1349).jpg', 'masked (1350).jpg', 'masked (1351).jpg', 'masked (1352).jpg', 'masked (1353).jpg', 'masked (1354).jpg', 'masked (1355).jpg', 'masked (1356).jpg', 'masked (1357).jpg', 'masked (1358).jpg', 'masked (1359).jpg', '0-with-mask.jpg', '1-with-mask.jpg', '10-with-mask.jpg', '100-with-mask.jpg', '101-with-mask.jpg', '103-with-mask.jpg', '104-with-mask.jpg', '105-with-mask.jpg', '106-with-mask.jpg']
In [11]:
print (unmasked)
['unmasked (1384).jpg', 'unmasked (1385).jpg', 'unmasked (1386).jpg', 'unmasked (1387).jpg', 'unmasked (1388).jpg', 'unmasked (1389).jpg', 'unmasked (1390).jpg', 'unmasked (1391).jpg', 'unmasked (1392).jpg', 'unmasked (1393).jpg', 'unmasked (1394).jpg', 'unmasked (1395).jpg', 'unmasked (1396).jpg', 'unmasked (1397).jpg', 'unmasked (1398).jpg', 'unmasked (1399).jpg', 'unmasked (1400).jpg', 'unmasked (1401).jpg', 'unmasked (1402).jpg', 'unmasked (1403).jpg', 'unmasked (1404).jpg', 'unmasked (1405).jpg', 'unmasked (1406).jpg', 'unmasked (1407).jpg', 'unmasked (1408).jpg', 'unmasked (1409).jpg', 'unmasked (1410).jpg', 'unmasked (1411).jpg', 'unmasked (1412).jpg', 'unmasked (1413).jpg', 'unmasked (1414).jpg', 'unmasked (1415).jpg', 'unmasked (1416).jpg', 'unmasked (1417).jpg', 'unmasked (1418).jpg', 'unmasked (1419).jpg', 'unmasked (1420).jpg', 'unmasked (1421).jpg', 'unmasked (1422).jpg', 'unmasked (1424).jpg', 'unmasked (1425).jpg', 'unmasked (1426).jpg', 'unmasked (1427).jpg', 'unmasked (1428).jpg', 'unmasked (1429).jpg', 'unmasked (1430).jpg', 'unmasked (1432).jpg', 'unmasked (1433).jpg', 'unmasked (1434).jpg', 'unmasked (1435).jpg', 'unmasked (1436).jpg', 'unmasked (1437).jpg', 'unmasked (1438).jpg', 'unmasked (1439).jpg', 'unmasked (1440).jpg', 'unmasked (1441).jpg', 'unmasked (1442).jpg', 'unmasked (1443).jpg', 'unmasked (1444).jpg', 'unmasked (1445).jpg', 'unmasked (1446).jpg', 'unmasked (1447).jpg', 'unmasked (1448).jpg', 'unmasked (1449).jpg', 'unmasked (1450).jpg', 'unmasked (1451).jpg', 'unmasked (1452).jpg', 'unmasked (1453).jpg', 'unmasked (1454).jpg', 'unmasked (1455).jpg', 'unmasked (1456).jpg', 'unmasked (1457).jpg', 'unmasked (1458).jpg', 'unmasked (1459).jpg', 'unmasked (1460).jpg', 'unmasked (1461).jpg', 'unmasked (1462).jpg', 'unmasked (1463).jpg', 'unmasked (1464).jpg', 'unmasked (1465).jpg', 'unmasked (1466).jpg', 'unmasked (1467).jpg', 'unmasked (1468).jpg', 'unmasked (1469).jpg', 'unmasked (1470).jpg', 'unmasked (1471).jpg', 'unmasked (1472).jpg', 'unmasked (1473).jpg', 'unmasked (1475).jpg', 'unmasked (1476).jpg', 'unmasked (1477).jpg', 'unmasked (1478).jpg', 'unmasked (1479).jpg', 'unmasked (1480).jpg', 'unmasked (1481).jpg', 'unmasked (1482).jpg', 'unmasked (1483).jpg', 'unmasked (1484).jpg', 'unmasked (1485).jpg', 'unmasked (1486).jpg', 'unmasked (1487).jpg', 'unmasked (1488).jpg', 'unmasked (1489).jpg', 'unmasked (1490).jpg', 'unmasked (1491).jpg', 'unmasked (1492).jpg', 'unmasked (1493).jpg', 'unmasked (1494).jpg', 'unmasked (1495).jpg', 'unmasked (1496).jpg', 'unmasked (1497).jpg', 'unmasked (1498).jpg', 'unmasked (1499).jpg', 'unmasked (1500).jpg', 'unmasked (1501).jpg', 'unmasked (1502).jpg', 'unmasked (1503).jpg', 'unmasked (1504).jpg', 'unmasked (1505).jpg', 'unmasked (1506).jpg', 'unmasked (1507).jpg', 'unmasked (1508).jpg', 'unmasked (1509).jpg', 'unmasked (1510).jpg', 'unmasked (1511).jpg', 'unmasked (1512).jpg', 'unmasked (1513).jpg', 'unmasked (1514).jpg', 'unmasked (1515).jpg', 'unmasked (1516).jpg', 'unmasked (1517).jpg', 'unmasked (1518).jpg', 'unmasked (1519).jpg', 'unmasked (1520).jpg', 'unmasked (1521).jpg', 'unmasked (1522).jpg', 'unmasked (1523).jpg', 'unmasked (1524).jpg', 'unmasked (1525).jpg', 'unmasked (1526).jpg', 'unmasked (1527).jpg', 'unmasked (1528).jpg', 'unmasked (1529).jpg', 'unmasked (1530).jpg', 'unmasked (1531).jpg', 'unmasked (1532).jpg', 'unmasked (1533).jpg', 'unmasked (1534).jpg', 'unmasked (1535).jpg', 'unmasked (1536).jpg', 'unmasked (1537).jpg', 'unmasked (1538).jpg', 'unmasked (1539).jpg', 'unmasked (1540).jpg', 'unmasked (1541).jpg', 'unmasked (1542).jpg', 'unmasked (1543).jpg', 'unmasked (1544).jpg', 'unmasked (1545).jpg', 'unmasked (1546).jpg', 'unmasked (1547).jpg', 'unmasked (1549).jpg', 'unmasked (1550).jpg', 'unmasked (1551).jpg', 'unmasked (1552).jpg', 'unmasked (1553).jpg', 'unmasked (1554).jpg', 'unmasked (1555).jpg', 'unmasked (1556).jpg', 'unmasked (1557).jpg', 'unmasked (1558).jpg', 'unmasked (1559).jpg', 'unmasked (1560).jpg', 'unmasked (1561).jpg', 'unmasked (1562).jpg', 'unmasked (1563).jpg', 'unmasked (1564).jpg', 'unmasked (1565).jpg', 'unmasked (1566).jpg', 'unmasked (1567).jpg', 'unmasked (1568).jpg', 'unmasked (1569).jpg', 'unmasked (1570).jpg', 'unmasked (1571).jpg', 'unmasked (1572).jpg', 'unmasked (1573).jpg', 'unmasked (1574).jpg', 'unmasked (1575).jpg', 'unmasked (1576).jpg', 'unmasked (1577).jpg', 'unmasked (1578).jpg', 'unmasked (1579).jpg', 'unmasked (1580).jpg', 'unmasked (1581).jpg', 'unmasked (1582).jpg', 'unmasked (1583).jpg', 'unmasked (1584).jpg', 'unmasked (1585).jpg', 'unmasked (1586).jpg', 'unmasked (1587).jpg', 'unmasked (1588).jpg', 'unmasked (1591).jpg', 'unmasked (1592).jpg', 'unmasked (1593).jpg', 'unmasked (1594).jpg', 'unmasked (1595).jpg', 'unmasked (1596).jpg', 'unmasked (1597).jpg', 'unmasked (1598).jpg', 'unmasked (1599).jpg', 'unmasked (1600).jpg', 'unmasked (1601).jpg', 'unmasked (1602).jpg', 'unmasked (1603).jpg', 'unmasked (1604).jpg', 'unmasked (1605).jpg', 'unmasked (1606).jpg', 'unmasked (1607).jpg', 'unmasked (1609).jpg', 'unmasked (1610).jpg', 'unmasked (1611).jpg', 'unmasked (1612).jpg', 'unmasked (1613).jpg', 'unmasked (1614).jpg', 'unmasked (1615).jpg', 'unmasked (1616).jpg', 'unmasked (1617).jpg', 'unmasked (1618).jpg', 'unmasked (1619).jpg', 'unmasked (1620).jpg', 'unmasked (1621).jpg', 'unmasked (1622).jpg', 'unmasked (1623).jpg', 'unmasked (1624).jpg', 'unmasked (1625).jpg', 'unmasked (1626).jpg', 'unmasked (1627).jpg', 'unmasked (1628).jpg', 'unmasked (1629).jpg', 'unmasked (1630).jpg', 'unmasked (1631).jpg', 'unmasked (1632).jpg', 'unmasked (1633).jpg', 'unmasked (1634).jpg', 'unmasked (1635).jpg', 'unmasked (1636).jpg', 'unmasked (1637).jpg', 'unmasked (1638).jpg', 'unmasked (1639).jpg', 'unmasked (1640).jpg', 'unmasked (1642).jpg', 'unmasked (1644).jpg', 'unmasked (1645).jpg', 'unmasked (1646).jpg', 'unmasked (1647).jpg', 'unmasked (1648).jpg', 'unmasked (1649).jpg', 'unmasked (1650).jpg', 'unmasked (1651).jpg', 'unmasked (1652).jpg', 'unmasked (1653).jpg', 'unmasked (1654).jpg', 'unmasked (1655).jpg', 'unmasked (1656).jpg', 'unmasked (1659).jpg', 'unmasked (1662).jpg', 'unmasked (1663).jpg', 'unmasked (1669).jpg', 'unmasked (1670).jpg', 'unmasked (1671).jpg', 'unmasked (1672).jpg', 'unmasked (1673).jpg', 'unmasked (1674).jpg', 'unmasked (1677).jpg', 'unmasked (1680).jpg', 'unmasked (1682).jpg', 'unmasked (1683).jpg', 'unmasked (1688).jpg', 'unmasked (1690).jpg', 'unmasked (1697).jpg', 'unmasked (1699).jpg', 'unmasked (1708).jpg', 'unmasked (1709).jpg', 'unmasked (1714).jpg', 'unmasked (1716).jpg', 'unmasked (1725).jpg', 'unmasked (1730).jpg', 'unmasked (1732).jpg', 'unmasked (1733).jpg', 'unmasked (1739).jpg', 'unmasked (1741).jpg', 'unmasked (1746).jpg', 'unmasked (1748).jpg', 'unmasked (1752).jpg', 'unmasked (1758).jpg', 'unmasked (1761).jpg', 'unmasked (1762).jpg', 'unmasked (1763).jpg', 'unmasked (1764).jpg', 'unmasked (1769).jpg', 'unmasked (1777).jpg', 'unmasked (1778).jpg', 'unmasked (1785).jpg', 'unmasked (1788).jpg', 'unmasked (1792).jpg', 'unmasked (1793).jpg', 'unmasked (1794).jpg', 'unmasked (1795).jpg', 'unmasked (1796).jpg', 'unmasked (1800).jpg', 'unmasked (1803).jpg', 'unmasked (1807).jpg', 'unmasked (1813).jpg', 'unmasked (1815).jpg', 'unmasked (1819).jpg', 'unmasked (1822).jpg', 'unmasked (1824).jpg', 'unmasked (1827).jpg', 'unmasked (1834).jpg', 'unmasked (1835).jpg', 'unmasked (1839).jpg', 'unmasked (1840).jpg', 'unmasked (1843).jpg', 'unmasked (1852).jpg', 'unmasked (1853).jpg', 'unmasked (1854).jpg', 'unmasked (1856).jpg', 'unmasked (1858).jpg', 'unmasked (1859).jpg', 'unmasked (1864).jpg', 'unmasked (1865).jpg', 'unmasked (1866).jpg', 'unmasked (1867).jpg', 'unmasked (1869).jpg', 'unmasked (1872).jpg', 'unmasked (1875).jpg', 'unmasked (1876).jpg', 'unmasked (1879).jpg', 'unmasked (1882).jpg', 'unmasked (1885).jpg', 'unmasked (1886).jpg', 'unmasked (1888).jpg', 'unmasked (1891).jpg', 'unmasked (1894).jpg', 'unmasked (1897).jpg', 'unmasked (1899).jpg', 'unmasked (1900).jpg', 'unmasked (1903).jpg', 'unmasked (1904).jpg', 'unmasked (1907).jpg', 'unmasked (1912).jpg', 'unmasked (1250).jpg', 'unmasked (1251).jpg', 'unmasked (1252).jpg', 'unmasked (1253).jpg', 'unmasked (1255).jpg', 'unmasked (1256).jpg', 'unmasked (1257).jpg', 'unmasked (1260).jpg', 'unmasked (1261).jpg', 'unmasked (1262).jpg', 'unmasked (1263).jpg', 'unmasked (1264).jpg', 'unmasked (1265).jpg', 'unmasked (1266).jpg', 'unmasked (1267).jpg', 'unmasked (1268).jpg', 'unmasked (1269).jpg', 'unmasked (1270).jpg', 'unmasked (1271).jpg', 'unmasked (1272).jpg', 'unmasked (1274).jpg', 'unmasked (1275).jpg', 'unmasked (1276).jpg', 'unmasked (1277).jpg', 'unmasked (1278).jpg', 'unmasked (1279).jpg', 'unmasked (1280).jpg', 'unmasked (1282).jpg', 'unmasked (1285).jpg', 'unmasked (1286).jpg', 'unmasked (1287).jpg', 'unmasked (1288).jpg', 'unmasked (1289).jpg', 'unmasked (1290).jpg', 'unmasked (1291).jpg', 'unmasked (1292).jpg', 'unmasked (1293).jpg', 'unmasked (1295).jpg', 'unmasked (1297).jpg', 'unmasked (1298).jpg', 'unmasked (1299).jpg', 'unmasked (1301).jpg', 'unmasked (1302).jpg', 'unmasked (1303).jpg', 'unmasked (1304).jpg', 'unmasked (1306).jpg', 'unmasked (1307).jpg', 'unmasked (1308).jpg', 'unmasked (1309).jpg', 'unmasked (1310).jpg', 'unmasked (1311).jpg', 'unmasked (1312).jpg', 'unmasked (1313).jpg', 'unmasked (1314).jpg', 'unmasked (1315).jpg', 'unmasked (1316).jpg', 'unmasked (1317).jpg', 'unmasked (1318).jpg', 'unmasked (1319).jpg', 'unmasked (1321).jpg', 'unmasked (1322).jpg', 'unmasked (1323).jpg', 'unmasked (1324).jpg', 'unmasked (1325).jpg', 'unmasked (1326).jpg', 'unmasked (1327).jpg', 'unmasked (1328).jpg', 'unmasked (1329).jpg', 'unmasked (1330).jpg', 'unmasked (1331).jpg', 'unmasked (1332).jpg', 'unmasked (1333).jpg', 'unmasked (1334).jpg', 'unmasked (1335).jpg', 'unmasked (1336).jpg', 'unmasked (1337).jpg', 'unmasked (1338).jpg', 'unmasked (1339).jpg', 'unmasked (1340).jpg', 'unmasked (1341).jpg', 'unmasked (1342).jpg', 'unmasked (1343).jpg', 'unmasked (1344).jpg', 'unmasked (1372).jpg', 'unmasked (1374).jpg', 'unmasked (1375).jpg', 'unmasked (1376).jpg', 'unmasked (1377).jpg', 'unmasked (1378).jpg', 'unmasked (1380).jpg', 'unmasked (1381).jpg', 'unmasked (1382).jpg', 'unmasked (1383).jpg', '132.jpg', '134.jpg', '137.jpg', '138.jpg', '148.jpg', '149.jpg', '151.jpg', '159.jpg', '169.jpg', '178.jpg', '195.jpg', '201.jpg', '332.jpg', '431.jpg', '49.jpg', '63.jpg', '0.jpg']
In [12]:
random.shuffle(masked)
random.shuffle(unmasked)
In [13]:
print (masked)
['383-with-mask.jpg', 'masked (1863).jpg', 'masked (1665).jpg', 'masked (1260).jpg', '262-with-mask.jpg', 'masked (1414).jpg', '182-with-mask.jpg', '406-with-mask.jpg', '174-with-mask.jpg', '47-with-mask.jpg', 'masked (1541).jpg', 'masked (1308).jpg', 'masked (1914).jpg', 'masked (1319).jpg', '394-with-mask.jpg', 'masked (1413).jpg', 'masked (1449).jpg', 'with_maska (16).jpg', '86-with-mask.jpg', 'masked (10).jpg', 'with_mask (61).jpg', 'masked (1911).jpg', 'masked (1384).jpg', 'masked (1599).jpg', 'masked (1591).jpg', 'masked (1328).jpg', '411-with-mask.jpg', 'with_maska (20).jpg', 'masked (1435).jpg', 'masked (1870).jpg', 'masked (1514).jpg', 'masked (1684).jpg', 'with_mask (33).jpg', 'masked (1656).jpg', 'with_mask (52).jpg', 'with_mask (83).jpg', 'with_maska (10).jpg', 'masked (1909).jpg', '106-with-mask.jpg', '456-with-mask.jpg', 'masked (1364).jpg', '307-with-mask.jpg', '326-with-mask.jpg', 'with_maskb (9).jpg', 'with_maska (24).jpg', 'masked (1263).jpg', 'masked (1643).jpg', 'masked (1439).jpg', 'masked (1883).jpg', '187-with-mask.jpg', '345-with-mask.jpg', 'masked (1307).jpg', 'masked (1322).jpg', '343-with-mask.jpg', 'masked (3).jpg', 'masked (1403).jpg', '316-with-mask.jpg', '242-with-mask.jpg', '376-with-mask.jpg', '175-with-mask.jpg', 'with_mask (90).jpg', '206-with-mask.jpg', '399-with-mask.jpg', 'with_mask (71).jpg', 'masked (1459).jpg', 'with_mask (21).jpg', 'masked (1580).jpg', 'masked (1293).jpg', 'with_mask (32).jpg', 'masked (1664).jpg', 'masked (1687).jpg', 'masked (1892).jpg', 'with_mask (47).jpg', 'with_mask (74).jpg', 'with_mask (16).jpg', 'masked (1700).jpg', 'with_mask (95).jpg', 'masked (1584).jpg', 'masked (1337).jpg', 'with_maska (28).jpg', 'masked (1360).jpg', '446-with-mask.jpg', 'masked (1548).jpg', 'with_mask (70).jpg', 'masked (1621).jpg', '150-with-mask.jpg', '377-with-mask.jpg', 'with_mask (26).jpg', '331-with-mask.jpg', 'masked (1549).jpg', 'masked (1354).jpg', 'masked (1344).jpg', 'with_mask (11).jpg', 'masked (1680).jpg', 'masked (1355).jpg', 'masked (1563).jpg', 'masked (1871).jpg', 'with_maska (25).jpg', '421-with-mask.jpg', 'masked (1574).jpg', 'masked (1657).jpg', 'masked (1352).jpg', 'with_mask (30).jpg', '103-with-mask.jpg', '303-with-mask.jpg', 'masked (1607).jpg', 'masked (1375).jpg', 'with_mask (19).jpg', 'masked (1614).jpg', '309-with-mask.jpg', 'with_mask (102).jpg', 'masked (1343).jpg', 'with_maskb (13).jpg', 'masked (1353).jpg', '462-with-mask.jpg', '163-with-mask.jpg', 'masked (1257).jpg', '283-with-mask.jpg', 'with_mask (13).jpg', 'masked (1501).jpg', 'masked (1268).jpg', 'masked (1496).jpg', 'masked (1561).jpg', 'masked (1417).jpg', 'masked (1399).jpg', '378-with-mask.jpg', 'masked (1370).jpg', 'masked (1899).jpg', '443-with-mask.jpg', '231-with-mask.jpg', 'with_maskb (4).jpg', '168-with-mask.jpg', '6-with-mask.jpg', 'with_maskb (11).jpg', 'masked (1410).jpg', 'masked (1532).jpg', 'with_mask (40).jpg', 'masked (1438).jpg', 'masked (1622).jpg', '156-with-mask.jpg', 'masked (1666).jpg', 'masked (1553).jpg', 'masked (1887).jpg', '476-with-mask.jpg', '359-with-mask.jpg', 'masked (1312).jpg', '269-with-mask.jpg', '415-with-mask.jpg', 'masked (1658).jpg', 'with_mask (94).jpg', 'masked (1348).jpg', 'with_maska (4).jpg', 'masked (1505).jpg', 'masked (1277).jpg', 'with_maska (19).jpg', 'masked (1908).jpg', '429-with-mask.jpg', 'masked (9).jpg', 'masked (1673).jpg', 'prajna.jpg', '311-with-mask.jpg', 'masked (1400).jpg', 'masked (1495).jpg', '205-with-mask.jpg', '386-with-mask.jpg', 'masked (1320).jpg', 'masked (1586).jpg', 'masked (1579).jpg', '449-with-mask.jpg', 'masked (1335).jpg', '379-with-mask.jpg', 'with_mask (104).jpg', '339-with-mask.jpg', 'with_mask (4).jpg', '284-with-mask.jpg', '180-with-mask.jpg', 'masked (1529).jpg', '336-with-mask.jpg', 'masked (1540).jpg', 'masked (1661).jpg', 'masked (1271).jpg', 'with_mask (68).jpg', '61-with-mask.jpg', '346-with-mask.jpg', 'masked (1457).jpg', 'masked (1336).jpg', 'with_maskb (15).jpg', '100-with-mask.jpg', '78-with-mask.jpg', '83-with-mask.jpg', '127-with-mask.jpg', 'masked (1480).jpg', '246-with-mask.jpg', '91-with-mask.jpg', 'masked (8).jpg', 'masked (1279).jpg', 'masked (1506).jpg', '355-with-mask.jpg', 'with_maska (17).jpg', 'masked (1267).jpg', '460-with-mask.jpg', '196-with-mask.jpg', '374-with-mask.jpg', 'masked (1421).jpg', '228-with-mask.jpg', '35-with-mask.jpg', 'masked (1907).jpg', '340-with-mask.jpg', 'masked (1296).jpg', 'masked (1627).jpg', '434-with-mask.jpg', 'masked (1872).jpg', 'masked (1366).jpg', 'masked (1632).jpg', 'masked (1601).jpg', 'masked (1675).jpg', 'masked (1879).jpg', 'masked (1676).jpg', '405-with-mask.jpg', 'masked (1280).jpg', 'masked (1275).jpg', 'masked (1297).jpg', 'masked (1510).jpg', '294-with-mask.jpg', 'masked (1325).jpg', 'masked (1663).jpg', '89-with-mask.jpg', 'masked (1585).jpg', 'masked (1401).jpg', '189-with-mask.jpg', 'masked (1381).jpg', 'with_maska (14).jpg', 'masked (1463).jpg', 'masked (1567).jpg', '123-with-mask.jpg', 'masked (1672).jpg', 'masked (1448).jpg', '324-with-mask.jpg', '214-with-mask.jpg', 'masked (1340).jpg', 'with_mask (87).jpg', 'masked (1523).jpg', 'with_mask (98).jpg', 'masked (1596).jpg', '357-with-mask.jpg', 'masked (1361).jpg', 'masked (1644).jpg', 'masked (1618).jpg', '194-with-mask.jpg', 'masked (1367).jpg', 'with_maska (6).jpg', 'with_mask (54).jpg', '71-with-mask.jpg', '313-with-mask.jpg', 'masked (1538).jpg', 'masked (1637).jpg', 'masked (1906).jpg', '108-with-mask.jpg', 'masked (1653).jpg', 'masked (1525).jpg', '390-with-mask.jpg', 'masked (1620).jpg', '234-with-mask.jpg', 'masked (1895).jpg', 'with_mask (18).jpg', 'masked (1485).jpg', 'with_mask (50).jpg', 'with_mask (9).jpg', 'masked (1896).jpg', 'with_maskb (5).jpg', 'masked (7).jpg', 'masked (1690).jpg', 'masked (1288).jpg', 'masked (1420).jpg', '237-with-mask.jpg', 'with_mask (63).jpg', '148-with-mask.jpg', 'with_mask (34).jpg', 'masked (1560).jpg', 'with_maska (18).jpg', 'with_maska (26).jpg', 'masked (1645).jpg', 'masked (1473).jpg', 'with_maskb (1).jpg', 'masked (1573).jpg', 'masked (1612).jpg', 'masked (1697).jpg', 'masked (1590).jpg', 'with_maskb (10).jpg', '244-with-mask.jpg', '275-with-mask.jpg', 'pra1.jpg', 'with_mask (101).jpg', 'with_mask (88).jpg', 'masked (1351).jpg', '333-with-mask.jpg', '296-with-mask.jpg', '241-with-mask.jpg', 'masked (1402).jpg', 'with_mask (2).jpg', '53-with-mask.jpg', 'masked (1609).jpg', '315-with-mask.jpg', '169-with-mask.jpg', 'masked (1670).jpg', 'masked (1903).jpg', 'masked (1551).jpg', 'masked (1385).jpg', 'with_mask (49).jpg', '1-with-mask.jpg', 'masked (1409).jpg', 'masked (1287).jpg', '43-with-mask.jpg', '153-with-mask.jpg', 'masked (1426).jpg', 'masked (1369).jpg', '57-with-mask.jpg', '129-with-mask.jpg', '138-with-mask.jpg', 'masked (1404).jpg', 'with_mask (36).jpg', 'masked (1408).jpg', '221-with-mask.jpg', 'with_mask (64).jpg', '157-with-mask.jpg', 'with_mask (59).jpg', '285-with-mask.jpg', '152-with-mask.jpg', 'masked (1891).jpg', '425-with-mask.jpg', 'masked (1484).jpg', 'masked (1624).jpg', '84-with-mask.jpg', 'masked (1477).jpg', 'with_maskb (2).jpg', 'masked (1430).jpg', '222-with-mask.jpg', 'masked (1304).jpg', 'with_maska (15).jpg', '387-with-mask.jpg', '139-with-mask.jpg', 'masked (1458).jpg', 'masked (1503).jpg', 'masked (1638).jpg', 'masked (1444).jpg', 'masked (1648).jpg', 'masked (1500).jpg', 'masked (1552).jpg', '477-with-mask.jpg', '52-with-mask.jpg', 'with_maskb (7).jpg', 'masked (1578).jpg', 'with_mask (42).jpg', 'masked (1309).jpg', 'masked (1411).jpg', 'with_mask (12).jpg', 'masked (1886).jpg', 'masked (1269).jpg', '201-with-mask.jpg', 'masked (1865).jpg', '448-with-mask.jpg', 'with_mask (3).jpg', '215-with-mask.jpg', 'masked (1651).jpg', 'with_mask (79).jpg', 'with_mask (44).jpg', 'with_mask (39).jpg', 'masked (1513).jpg', 'masked (1359).jpg', '433-with-mask.jpg', 'masked (1655).jpg', 'masked (1266).jpg', 'masked (1443).jpg', '289-with-mask.jpg', '261-with-mask.jpg', '114-with-mask.jpg', '65-with-mask.jpg', 'masked (1901).jpg', 'masked (1261).jpg', '77-with-mask.jpg', '431-with-mask.jpg', 'masked (1465).jpg', '450-with-mask.jpg', 'masked (1332).jpg', 'with_mask (14).jpg', '200-with-mask.jpg', '236-with-mask.jpg', 'masked (1491).jpg', 'masked (1519).jpg', 'masked (1396).jpg', '26-with-mask.jpg', 'masked (6).jpg', 'masked (1878).jpg', '330-with-mask.jpg', 'with_maskb (6).jpg', 'masked (1884).jpg', 'masked (1318).jpg', 'masked (1873).jpg', 'masked (1454).jpg', '435-with-mask.jpg', 'masked (1363).jpg', '118-with-mask.jpg', 'masked (1625).jpg', '79-with-mask.jpg', '2-with-mask.jpg', 'masked (1511).jpg', 'masked (1442).jpg', '422-with-mask.jpg', 'pra2.jpg', 'masked (1695).jpg', '80-with-mask.jpg', 'masked (1639).jpg', 'masked (1652).jpg', 'masked (1518).jpg', '365-with-mask.jpg', '38-with-mask.jpg', 'masked (1628).jpg', 'masked (1492).jpg', 'masked (1440).jpg', 'with_mask (35).jpg', 'masked (1693).jpg', 'masked (1283).jpg', '409-with-mask.jpg', '243-with-mask.jpg', 'masked (1537).jpg', 'with_mask (78).jpg', 'masked (1468).jpg', 'masked (1437).jpg', 'masked (1671).jpg', 'masked (1497).jpg', 'masked (1334).jpg', 'masked (1504).jpg', '33-with-mask.jpg', '382-with-mask.jpg', '305-with-mask.jpg', 'masked (1683).jpg', 'masked (1576).jpg', 'masked (1286).jpg', 'masked (1474).jpg', '227-with-mask.jpg', '39-with-mask.jpg', 'with_mask (43).jpg', '235-with-mask.jpg', 'with_maska (2).jpg', 'masked (1378).jpg', 'masked (1331).jpg', 'with_mask (81).jpg', 'with_mask (93).jpg', 'masked (1291).jpg', 'with_mask (75).jpg', '391-with-mask.jpg', '8-with-mask.jpg', 'masked (1380).jpg', '158-with-mask.jpg', '233-with-mask.jpg', '193-with-mask.jpg', 'masked (1346).jpg', 'masked (1509).jpg', 'masked (11).jpg', 'masked (1542).jpg', 'masked (1298).jpg', 'masked (1898).jpg', '474-with-mask.jpg', 'masked (1554).jpg', 'masked (1674).jpg', 'masked (1562).jpg', 'with_mask (57).jpg', '122-with-mask.jpg', 'with_maska (11).jpg', '121-with-mask.jpg', 'masked (1581).jpg', 'masked (1629).jpg', '375-with-mask.jpg', '110-with-mask.jpg', 'masked (1572).jpg', 'masked (1861).jpg', 'masked (1641).jpg', 'masked (1415).jpg', 'with_mask (48).jpg', '362-with-mask.jpg', 'masked (1566).jpg', 'masked (1564).jpg', '76-with-mask.jpg', '119-with-mask.jpg', 'masked (1913).jpg', '286-with-mask.jpg', '105-with-mask.jpg', 'masked (1619).jpg', '73-with-mask.jpg', '252-with-mask.jpg', '154-with-mask.jpg', 'with_maska (3).jpg', 'with_mask (73).jpg', 'masked (1539).jpg', 'masked (1888).jpg', '413-with-mask.jpg', '98-with-mask.jpg', 'masked (1556).jpg', '293-with-mask.jpg', 'masked (1446).jpg', 'masked (1616).jpg', 'masked (1300).jpg', 'with_mask (27).jpg', '82-with-mask.jpg', '29-with-mask.jpg', 'with_mask (105).jpg', '274-with-mask.jpg', 'masked (1460).jpg', '407-with-mask.jpg', 'masked (1338).jpg', '36-with-mask.jpg', 'masked (1890).jpg', 'masked (1660).jpg', '295-with-mask.jpg', '126-with-mask.jpg', 'with_mask (92).jpg', 'masked (1290).jpg', 'with_maska (22).jpg', 'masked (1431).jpg', 'with_mask (91).jpg', 'masked (1311).jpg', 'with_mask (38).jpg', '37-with-mask.jpg', 'masked (1493).jpg', '172-with-mask.jpg', 'masked (1866).jpg', '356-with-mask.jpg', '290-with-mask.jpg', '128-with-mask.jpg', 'masked (1315).jpg', 'masked (1358).jpg', '96-with-mask.jpg', 'with_maska (29).jpg', '277-with-mask.jpg', '11-with-mask.jpg', '408-with-mask.jpg', '109-with-mask.jpg', '299-with-mask.jpg', 'masked (1386).jpg', 'masked (1329).jpg', '72-with-mask.jpg', '453-with-mask.jpg', 'masked (1688).jpg', '344-with-mask.jpg', 'masked (1450).jpg', '151-with-mask.jpg', '99-with-mask.jpg', '93-with-mask.jpg', 'masked (1691).jpg', 'masked (1316).jpg', 'masked (1536).jpg', 'masked (1488).jpg', 'with_mask (65).jpg', '171-with-mask.jpg', 'with_maskb (8).jpg', '419-with-mask.jpg', '325-with-mask.jpg', '385-with-mask.jpg', 'masked (1306).jpg', 'masked (1699).jpg', 'masked (1570).jpg', '314-with-mask.jpg', 'masked (1441).jpg', 'masked (1292).jpg', '287-with-mask.jpg', 'masked (1531).jpg', 'masked (1882).jpg', 'with_mask (72).jpg', 'masked (1258).jpg', 'masked (1694).jpg', '34-with-mask.jpg', '4-with-mask.jpg', 'masked (1559).jpg', '430-with-mask.jpg', '279-with-mask.jpg', 'masked (1623).jpg', '304-with-mask.jpg', '288-with-mask.jpg', '401-with-mask.jpg', 'masked (1373).jpg', 'with_mask (67).jpg', 'masked (1597).jpg', 'masked (1462).jpg', 'masked (1606).jpg', 'with_mask (25).jpg', 'with_mask (85).jpg', 'masked (1350).jpg', '272-with-mask.jpg', '223-with-mask.jpg', '349-with-mask.jpg', '436-with-mask.jpg', '395-with-mask.jpg', '62-with-mask.jpg', 'masked (1272).jpg', '70-with-mask.jpg', 'masked (1356).jpg', 'with_mask (55).jpg', 'masked (1455).jpg', 'masked (5).jpg', 'masked (1698).jpg', 'masked (1910).jpg', 'masked (1876).jpg', '402-with-mask.jpg', 'masked (1516).jpg', 'masked (1478).jpg', 'masked (1659).jpg', 'masked (1696).jpg', 'masked (1603).jpg', '120-with-mask.jpg', 'with_maska (27).jpg', '451-with-mask.jpg', '173-with-mask.jpg', 'with_mask (31).jpg', '218-with-mask.jpg', 'masked (1894).jpg', '64-with-mask.jpg', 'masked (1487).jpg', '318-with-mask.jpg', 'masked (1472).jpg', 'masked (1395).jpg', 'with_mask (24).jpg', 'masked (1507).jpg', 'masked (1429).jpg', '298-with-mask.jpg', 'masked (1274).jpg', 'masked (1682).jpg', '398-with-mask.jpg', '466-with-mask.jpg', 'with_mask (76).jpg', 'masked (1273).jpg', '276-with-mask.jpg', 'masked (1650).jpg', 'masked (1512).jpg', '445-with-mask.jpg', 'masked (1685).jpg', 'masked (1520).jpg', 'with_mask (69).jpg', 'masked (1545).jpg', 'masked (1382).jpg', '81-with-mask.jpg', '56-with-mask.jpg', '263-with-mask.jpg', '369-with-mask.jpg', '137-with-mask.jpg', 'masked (1432).jpg', '351-with-mask.jpg', '256-with-mask.jpg', 'masked (1557).jpg', 'masked (1610).jpg', 'masked (1489).jpg', 'masked (1897).jpg', 'with_mask (17).jpg', '281-with-mask.jpg', '161-with-mask.jpg', 'masked (1284).jpg', '30-with-mask.jpg', '74-with-mask.jpg', '440-with-mask.jpg', 'masked (1424).jpg', 'masked (1587).jpg', 'masked (1461).jpg', 'masked (1631).jpg', 'with_mask (84).jpg', 'with_mask (58).jpg', 'masked (1476).jpg', '238-with-mask.jpg', 'masked (1388).jpg', 'masked (1662).jpg', '186-with-mask.jpg', 'with_mask (96).jpg', '225-with-mask.jpg', '232-with-mask.jpg', 'masked (1543).jpg', '198-with-mask.jpg', 'masked (1357).jpg', '335-with-mask.jpg', '3-with-mask.jpg', '229-with-mask.jpg', 'masked (1611).jpg', 'masked (1259).jpg', '414-with-mask.jpg', 'masked (1881).jpg', 'masked (1630).jpg', '366-with-mask.jpg', '133-with-mask.jpg', 'masked (1494).jpg', 'masked (1593).jpg', 'masked (1592).jpg', '155-with-mask.jpg', 'masked (1654).jpg', 'masked (1608).jpg', 'masked (1583).jpg', '270-with-mask.jpg', 'masked (1422).jpg', '13-with-mask.jpg', '432-with-mask.jpg', '5-with-mask.jpg', 'masked (1633).jpg', '48-with-mask.jpg', '439-with-mask.jpg', '10-with-mask.jpg', '417-with-mask.jpg', '397-with-mask.jpg', 'masked (1270).jpg', '319-with-mask.jpg', '257-with-mask.jpg', 'with_maska (23).jpg', '124-with-mask.jpg', 'with_mask (29).jpg', 'with_mask (41).jpg', 'with_mask (8).jpg', 'masked (1530).jpg', '12-with-mask.jpg', '358-with-mask.jpg', '334-with-mask.jpg', '204-with-mask.jpg', 'with_maska (5).jpg', 'masked (1534).jpg', '384-with-mask.jpg', 'masked (1339).jpg', '179-with-mask.jpg', '135-with-mask.jpg', '41-with-mask.jpg', '282-with-mask.jpg', '46-with-mask.jpg', 'masked (1681).jpg', 'masked (1575).jpg', 'masked (1904).jpg', 'masked (1885).jpg', 'masked (1508).jpg', 'with_maska (13).jpg', 'masked (1423).jpg', 'with_mask (6).jpg', 'masked (1649).jpg', 'masked (1589).jpg', 'masked (1451).jpg', 'masked (1692).jpg', '92-with-mask.jpg', '454-with-mask.jpg', '40-with-mask.jpg', '253-with-mask.jpg', 'with_mask (60).jpg', 'with_mask (10).jpg', 'with_mask (56).jpg', 'masked (1372).jpg', 'masked (1558).jpg', 'masked (1701).jpg', 'masked (1452).jpg', '217-with-mask.jpg', 'masked (1544).jpg', 'masked (1324).jpg', 'masked (1342).jpg', 'masked (1383).jpg', '239-with-mask.jpg', '427-with-mask.jpg', 'masked (1600).jpg', 'masked (1436).jpg', 'masked (1407).jpg', 'masked (1391).jpg', '381-with-mask.jpg', 'masked (1568).jpg', 'masked (1640).jpg', 'masked (1522).jpg', 'masked (1278).jpg', '463-with-mask.jpg', 'masked (1481).jpg', '478-with-mask.jpg', 'masked (1912).jpg', 'masked (1362).jpg', 'masked (1327).jpg', 'masked (1323).jpg', '404-with-mask.jpg', '342-with-mask.jpg', 'masked (1642).jpg', 'masked (1314).jpg', '368-with-mask.jpg', 'with_mask (51).jpg', 'masked (1321).jpg', '134-with-mask.jpg', 'masked (1425).jpg', 'masked (4).jpg', 'masked (1428).jpg', 'masked (1305).jpg', 'masked (1333).jpg', 'masked (1880).jpg', '116-with-mask.jpg', '212-with-mask.jpg', 'masked (1889).jpg', 'masked (1393).jpg', '101-with-mask.jpg', 'masked (1419).jpg', 'with_mask (37).jpg', 'with_mask (80).jpg', '461-with-mask.jpg', 'masked (1615).jpg', '348-with-mask.jpg', '441-with-mask.jpg', 'masked (1313).jpg', '144-with-mask.jpg', '447-with-mask.jpg', '273-with-mask.jpg', 'masked (1905).jpg', '481-with-mask.jpg', '185-with-mask.jpg', '207-with-mask.jpg', '183-with-mask.jpg', 'masked (1515).jpg', 'masked (1588).jpg', '88-with-mask.jpg', '181-with-mask.jpg', 'masked (1445).jpg', 'masked (1406).jpg', '141-with-mask.jpg', 'masked (1868).jpg', 'masked (1486).jpg', '125-with-mask.jpg', 'with_mask (77).jpg', '176-with-mask.jpg', '85-with-mask.jpg', 'masked (1604).jpg', '170-with-mask.jpg', 'with_mask (53).jpg', '177-with-mask.jpg', 'with_mask (5).jpg', 'masked (1900).jpg', '259-with-mask.jpg', 'masked (1517).jpg', '117-with-mask.jpg', '420-with-mask.jpg', '480-with-mask.jpg', '416-with-mask.jpg', '452-with-mask.jpg', 'masked (1264).jpg', 'with_maskb (14).jpg', 'with_mask (99).jpg', 'masked (1377).jpg', 'with_mask (23).jpg', '364-with-mask.jpg', 'masked (1526).jpg', '50-with-mask.jpg', '444-with-mask.jpg', 'masked (1502).jpg', '184-with-mask.jpg', 'masked (1349).jpg', '338-with-mask.jpg', '51-with-mask.jpg', 'masked (1301).jpg', '291-with-mask.jpg', 'with_mask (15).jpg', 'masked (1703).jpg', 'masked (1527).jpg', '190-with-mask.jpg', '323-with-mask.jpg', 'masked (1528).jpg', 'masked (1371).jpg', '260-with-mask.jpg', 'masked (1365).jpg', 'with_mask (45).jpg', 'masked (1303).jpg', 'masked (1418).jpg', '392-with-mask.jpg', 'masked (1524).jpg', '442-with-mask.jpg', 'masked (1605).jpg', '268-with-mask.jpg', '471-with-mask.jpg', 'masked (1282).jpg', 'masked (1613).jpg', 'masked (1310).jpg', 'masked (1433).jpg', '167-with-mask.jpg', 'masked (1326).jpg', 'masked (1598).jpg', '49-with-mask.jpg', 'masked (1467).jpg', 'with_mask (20).jpg', 'masked (1434).jpg', '322-with-mask.jpg', 'masked (1565).jpg', '224-with-mask.jpg', '438-with-mask.jpg', '240-with-mask.jpg', 'masked (1617).jpg', '332-with-mask.jpg', 'masked (1398).jpg', '132-with-mask.jpg', '473-with-mask.jpg', 'masked (1482).jpg', '347-with-mask.jpg', 'masked (1276).jpg', '464-with-mask.jpg', 'masked (1490).jpg', 'masked (1427).jpg', '211-with-mask.jpg', 'masked (1577).jpg', 'masked (1668).jpg', '306-with-mask.jpg', 'masked (1602).jpg', 'masked (1416).jpg', 'masked (1466).jpg', '27-with-mask.jpg', 'masked (1341).jpg', 'with_mask (86).jpg', 'masked (1464).jpg', 'with_mask (22).jpg', 'masked (1498).jpg', '159-with-mask.jpg', 'masked (1678).jpg', 'with_mask (97).jpg', '393-with-mask.jpg', '112-with-mask.jpg', '94-with-mask.jpg', 'masked (1483).jpg', 'with_mask (1).jpg', 'masked (1379).jpg', 'masked (1265).jpg', '113-with-mask.jpg', '475-with-mask.jpg', 'masked (1677).jpg', '209-with-mask.jpg', 'masked (1626).jpg', 'with_mask (7).jpg', 'masked (1533).jpg', 'with_mask (62).jpg', 'masked (1646).jpg', 'masked (1405).jpg', '459-with-mask.jpg', 'with_mask (103).jpg', 'masked (1877).jpg', '472-with-mask.jpg', 'masked (1915).jpg', '278-with-mask.jpg', '458-with-mask.jpg', '301-with-mask.jpg', 'masked (1289).jpg', '31-with-mask.jpg', '7-with-mask.jpg', '302-with-mask.jpg', '0-with-mask.jpg', '267-with-mask.jpg', 'masked (1669).jpg', 'masked (1869).jpg', 'masked (1317).jpg', 'masked (1569).jpg', '479-with-mask.jpg', '59-with-mask.jpg', 'with_maskb (3).jpg', 'masked (1456).jpg', 'masked (1479).jpg', 'with_maskb (12).jpg', 'pra3.jpg', 'masked (1547).jpg', 'masked (1647).jpg', '467-with-mask.jpg', 'masked (1535).jpg', '115-with-mask.jpg', 'masked (1347).jpg', 'masked (1330).jpg', 'with_maska (7).jpg', 'with_maska (21).jpg', 'masked (1546).jpg', 'masked (1874).jpg', '42-with-mask.jpg', '203-with-mask.jpg', 'masked (1864).jpg', '254-with-mask.jpg', 'masked (1412).jpg', '251-with-mask.jpg', 'masked (1475).jpg', '160-with-mask.jpg', '457-with-mask.jpg', 'masked (1635).jpg', 'with_maska (9).jpg', '111-with-mask.jpg', '455-with-mask.jpg', 'masked (1582).jpg', 'masked (1471).jpg', 'masked (1397).jpg', '327-with-mask.jpg', 'masked (1862).jpg', 'masked (1376).jpg', 'masked (1594).jpg', 'with_mask (46).jpg', '418-with-mask.jpg', '45-with-mask.jpg', '32-with-mask.jpg', 'masked (1702).jpg', '146-with-mask.jpg', 'with_mask (66).jpg', 'with_maska (12).jpg', 'with_maska (8).jpg', '353-with-mask.jpg', 'masked (1636).jpg', 'with_mask (82).jpg', '219-with-mask.jpg', '136-with-mask.jpg', 'masked (1867).jpg', '67-with-mask.jpg', 'masked (1387).jpg', 'masked (1634).jpg', 'with_mask (28).jpg', 'with_maska (1).jpg', 'with_mask (89).jpg', '192-with-mask.jpg', 'masked (1392).jpg', 'masked (1453).jpg', '202-with-mask.jpg', 'masked (1469).jpg', 'masked (1555).jpg', '245-with-mask.jpg', 'masked (1447).jpg', 'masked (1389).jpg', '308-with-mask.jpg', '396-with-mask.jpg', '147-with-mask.jpg', 'masked (1390).jpg', '68-with-mask.jpg', 'masked (1521).jpg', '317-with-mask.jpg', 'masked (1345).jpg', 'masked (1299).jpg', 'masked (1281).jpg', 'masked (1875).jpg', 'masked (1571).jpg', 'masked (1368).jpg', '195-with-mask.jpg', 'with_mask (100).jpg', '107-with-mask.jpg', 'masked (1686).jpg', 'masked (1667).jpg', 'masked (1893).jpg', 'masked (1285).jpg', '9-with-mask.jpg', '165-with-mask.jpg', '104-with-mask.jpg', '14-with-mask.jpg', 'masked (1394).jpg', '75-with-mask.jpg', '97-with-mask.jpg', 'masked (1470).jpg', 'masked (1902).jpg', '197-with-mask.jpg', 'masked (1302).jpg', 'masked (1595).jpg', '131-with-mask.jpg', 'masked (1499).jpg', 'masked (1550).jpg', '140-with-mask.jpg', '162-with-mask.jpg']
In [14]:
print (unmasked)
['unmasked (1511).jpg', 'unmasked (1406).jpg', 'unmasked (1454).jpg', 'unmasked (1549).jpg', 'unmasked (1491).jpg', 'unmasked (1459).jpg', 'unmasked (1514).jpg', 'unmasked (1342).jpg', 'unmasked (1741).jpg', '151.jpg', 'unmasked (1299).jpg', 'unmasked (1448).jpg', 'unmasked (1620).jpg', 'unmasked (1250).jpg', '159.jpg', 'unmasked (1476).jpg', 'unmasked (1582).jpg', 'unmasked (1592).jpg', 'unmasked (1399).jpg', 'unmasked (1481).jpg', 'unmasked (1293).jpg', 'unmasked (1858).jpg', 'unmasked (1383).jpg', 'unmasked (1714).jpg', 'unmasked (1307).jpg', 'unmasked (1425).jpg', 'unmasked (1314).jpg', 'unmasked (1597).jpg', 'unmasked (1563).jpg', 'unmasked (1538).jpg', 'unmasked (1653).jpg', 'unmasked (1567).jpg', 'unmasked (1477).jpg', 'unmasked (1551).jpg', 'unmasked (1566).jpg', 'unmasked (1498).jpg', 'unmasked (1418).jpg', 'unmasked (1330).jpg', 'unmasked (1458).jpg', 'unmasked (1555).jpg', 'unmasked (1659).jpg', 'unmasked (1560).jpg', 'unmasked (1421).jpg', 'unmasked (1388).jpg', 'unmasked (1453).jpg', 'unmasked (1424).jpg', 'unmasked (1265).jpg', 'unmasked (1758).jpg', 'unmasked (1426).jpg', 'unmasked (1574).jpg', 'unmasked (1505).jpg', 'unmasked (1527).jpg', '201.jpg', 'unmasked (1442).jpg', 'unmasked (1859).jpg', 'unmasked (1263).jpg', 'unmasked (1835).jpg', 'unmasked (1769).jpg', 'unmasked (1631).jpg', 'unmasked (1374).jpg', 'unmasked (1822).jpg', 'unmasked (1564).jpg', 'unmasked (1739).jpg', 'unmasked (1471).jpg', 'unmasked (1609).jpg', 'unmasked (1697).jpg', 'unmasked (1438).jpg', 'unmasked (1573).jpg', 'unmasked (1338).jpg', 'unmasked (1606).jpg', 'unmasked (1266).jpg', '138.jpg', 'unmasked (1655).jpg', 'unmasked (1532).jpg', 'unmasked (1268).jpg', 'unmasked (1257).jpg', 'unmasked (1416).jpg', 'unmasked (1583).jpg', 'unmasked (1251).jpg', 'unmasked (1409).jpg', 'unmasked (1520).jpg', 'unmasked (1384).jpg', 'unmasked (1276).jpg', 'unmasked (1513).jpg', 'unmasked (1535).jpg', 'unmasked (1585).jpg', 'unmasked (1439).jpg', 'unmasked (1634).jpg', 'unmasked (1683).jpg', 'unmasked (1334).jpg', 'unmasked (1604).jpg', 'unmasked (1503).jpg', 'unmasked (1495).jpg', 'unmasked (1414).jpg', 'unmasked (1492).jpg', 'unmasked (1419).jpg', 'unmasked (1605).jpg', 'unmasked (1337).jpg', 'unmasked (1633).jpg', '149.jpg', 'unmasked (1600).jpg', 'unmasked (1819).jpg', 'unmasked (1267).jpg', 'unmasked (1616).jpg', 'unmasked (1410).jpg', 'unmasked (1673).jpg', 'unmasked (1677).jpg', 'unmasked (1793).jpg', 'unmasked (1557).jpg', 'unmasked (1264).jpg', 'unmasked (1530).jpg', 'unmasked (1647).jpg', 'unmasked (1524).jpg', 'unmasked (1372).jpg', 'unmasked (1885).jpg', 'unmasked (1544).jpg', 'unmasked (1813).jpg', 'unmasked (1433).jpg', 'unmasked (1303).jpg', 'unmasked (1335).jpg', 'unmasked (1843).jpg', 'unmasked (1493).jpg', 'unmasked (1912).jpg', 'unmasked (1302).jpg', 'unmasked (1834).jpg', 'unmasked (1432).jpg', 'unmasked (1310).jpg', 'unmasked (1569).jpg', '169.jpg', 'unmasked (1429).jpg', 'unmasked (1400).jpg', 'unmasked (1253).jpg', 'unmasked (1290).jpg', 'unmasked (1480).jpg', 'unmasked (1899).jpg', 'unmasked (1785).jpg', 'unmasked (1865).jpg', 'unmasked (1599).jpg', 'unmasked (1461).jpg', 'unmasked (1331).jpg', 'unmasked (1752).jpg', 'unmasked (1602).jpg', 'unmasked (1601).jpg', 'unmasked (1376).jpg', 'unmasked (1496).jpg', 'unmasked (1404).jpg', 'unmasked (1642).jpg', 'unmasked (1327).jpg', 'unmasked (1445).jpg', 'unmasked (1444).jpg', 'unmasked (1762).jpg', 'unmasked (1321).jpg', 'unmasked (1853).jpg', 'unmasked (1562).jpg', 'unmasked (1572).jpg', 'unmasked (1510).jpg', 'unmasked (1635).jpg', 'unmasked (1795).jpg', 'unmasked (1840).jpg', 'unmasked (1487).jpg', 'unmasked (1456).jpg', 'unmasked (1680).jpg', 'unmasked (1591).jpg', 'unmasked (1457).jpg', 'unmasked (1614).jpg', 'unmasked (1888).jpg', 'unmasked (1536).jpg', 'unmasked (1645).jpg', 'unmasked (1336).jpg', 'unmasked (1316).jpg', 'unmasked (1882).jpg', '148.jpg', 'unmasked (1540).jpg', 'unmasked (1443).jpg', 'unmasked (1381).jpg', 'unmasked (1255).jpg', 'unmasked (1746).jpg', 'unmasked (1534).jpg', 'unmasked (1761).jpg', 'unmasked (1378).jpg', 'unmasked (1391).jpg', 'unmasked (1462).jpg', 'unmasked (1800).jpg', 'unmasked (1663).jpg', 'unmasked (1618).jpg', 'unmasked (1674).jpg', 'unmasked (1638).jpg', 'unmasked (1537).jpg', 'unmasked (1473).jpg', 'unmasked (1518).jpg', 'unmasked (1512).jpg', 'unmasked (1525).jpg', 'unmasked (1332).jpg', 'unmasked (1886).jpg', '332.jpg', 'unmasked (1397).jpg', '137.jpg', 'unmasked (1565).jpg', 'unmasked (1415).jpg', 'unmasked (1529).jpg', 'unmasked (1413).jpg', 'unmasked (1531).jpg', 'unmasked (1596).jpg', 'unmasked (1648).jpg', '132.jpg', 'unmasked (1547).jpg', 'unmasked (1515).jpg', 'unmasked (1662).jpg', 'unmasked (1656).jpg', 'unmasked (1528).jpg', 'unmasked (1499).jpg', 'unmasked (1839).jpg', 'unmasked (1468).jpg', 'unmasked (1428).jpg', 'unmasked (1393).jpg', 'unmasked (1594).jpg', 'unmasked (1412).jpg', 'unmasked (1306).jpg', 'unmasked (1497).jpg', 'unmasked (1322).jpg', 'unmasked (1669).jpg', 'unmasked (1576).jpg', 'unmasked (1716).jpg', 'unmasked (1455).jpg', 'unmasked (1522).jpg', 'unmasked (1581).jpg', 'unmasked (1389).jpg', 'unmasked (1450).jpg', 'unmasked (1295).jpg', 'unmasked (1340).jpg', 'unmasked (1309).jpg', 'unmasked (1869).jpg', 'unmasked (1312).jpg', 'unmasked (1472).jpg', 'unmasked (1603).jpg', 'unmasked (1866).jpg', 'unmasked (1396).jpg', 'unmasked (1777).jpg', 'unmasked (1619).jpg', 'unmasked (1275).jpg', 'unmasked (1559).jpg', 'unmasked (1452).jpg', 'unmasked (1539).jpg', 'unmasked (1411).jpg', 'unmasked (1670).jpg', 'unmasked (1377).jpg', '0.jpg', 'unmasked (1460).jpg', '134.jpg', 'unmasked (1324).jpg', 'unmasked (1301).jpg', 'unmasked (1570).jpg', 'unmasked (1788).jpg', 'unmasked (1615).jpg', 'unmasked (1584).jpg', 'unmasked (1298).jpg', 'unmasked (1519).jpg', 'unmasked (1794).jpg', 'unmasked (1343).jpg', 'unmasked (1575).jpg', 'unmasked (1344).jpg', 'unmasked (1463).jpg', 'unmasked (1621).jpg', 'unmasked (1699).jpg', 'unmasked (1326).jpg', 'unmasked (1748).jpg', 'unmasked (1501).jpg', 'unmasked (1900).jpg', 'unmasked (1437).jpg', 'unmasked (1622).jpg', 'unmasked (1649).jpg', 'unmasked (1864).jpg', 'unmasked (1318).jpg', 'unmasked (1380).jpg', 'unmasked (1904).jpg', 'unmasked (1465).jpg', 'unmasked (1385).jpg', 'unmasked (1630).jpg', 'unmasked (1671).jpg', 'unmasked (1617).jpg', 'unmasked (1561).jpg', 'unmasked (1479).jpg', 'unmasked (1607).jpg', 'unmasked (1271).jpg', 'unmasked (1402).jpg', 'unmasked (1256).jpg', 'unmasked (1624).jpg', 'unmasked (1854).jpg', 'unmasked (1632).jpg', 'unmasked (1852).jpg', 'unmasked (1626).jpg', 'unmasked (1466).jpg', 'unmasked (1430).jpg', 'unmasked (1308).jpg', 'unmasked (1593).jpg', 'unmasked (1807).jpg', 'unmasked (1586).jpg', 'unmasked (1277).jpg', 'unmasked (1279).jpg', 'unmasked (1558).jpg', 'unmasked (1856).jpg', 'unmasked (1328).jpg', 'unmasked (1469).jpg', 'unmasked (1489).jpg', 'unmasked (1447).jpg', 'unmasked (1580).jpg', 'unmasked (1484).jpg', 'unmasked (1486).jpg', 'unmasked (1292).jpg', 'unmasked (1650).jpg', 'unmasked (1553).jpg', '431.jpg', 'unmasked (1289).jpg', 'unmasked (1341).jpg', 'unmasked (1709).jpg', 'unmasked (1434).jpg', 'unmasked (1827).jpg', 'unmasked (1401).jpg', 'unmasked (1287).jpg', 'unmasked (1502).jpg', 'unmasked (1313).jpg', 'unmasked (1730).jpg', 'unmasked (1577).jpg', 'unmasked (1278).jpg', 'unmasked (1872).jpg', 'unmasked (1390).jpg', 'unmasked (1311).jpg', 'unmasked (1422).jpg', 'unmasked (1490).jpg', 'unmasked (1398).jpg', 'unmasked (1417).jpg', 'unmasked (1533).jpg', 'unmasked (1382).jpg', 'unmasked (1688).jpg', 'unmasked (1408).jpg', 'unmasked (1796).jpg', 'unmasked (1506).jpg', 'unmasked (1464).jpg', 'unmasked (1317).jpg', 'unmasked (1627).jpg', 'unmasked (1571).jpg', 'unmasked (1286).jpg', 'unmasked (1550).jpg', 'unmasked (1339).jpg', 'unmasked (1482).jpg', 'unmasked (1323).jpg', 'unmasked (1407).jpg', 'unmasked (1891).jpg', 'unmasked (1282).jpg', 'unmasked (1903).jpg', 'unmasked (1297).jpg', 'unmasked (1625).jpg', 'unmasked (1552).jpg', 'unmasked (1325).jpg', 'unmasked (1636).jpg', 'unmasked (1778).jpg', 'unmasked (1644).jpg', 'unmasked (1333).jpg', 'unmasked (1732).jpg', 'unmasked (1556).jpg', 'unmasked (1523).jpg', 'unmasked (1488).jpg', 'unmasked (1504).jpg', 'unmasked (1623).jpg', 'unmasked (1543).jpg', 'unmasked (1897).jpg', 'unmasked (1280).jpg', 'unmasked (1262).jpg', 'unmasked (1545).jpg', 'unmasked (1578).jpg', 'unmasked (1485).jpg', 'unmasked (1375).jpg', 'unmasked (1588).jpg', 'unmasked (1394).jpg', 'unmasked (1672).jpg', 'unmasked (1542).jpg', 'unmasked (1261).jpg', 'unmasked (1494).jpg', 'unmasked (1517).jpg', 'unmasked (1907).jpg', 'unmasked (1387).jpg', 'unmasked (1637).jpg', 'unmasked (1894).jpg', 'unmasked (1478).jpg', 'unmasked (1708).jpg', 'unmasked (1427).jpg', 'unmasked (1579).jpg', 'unmasked (1803).jpg', 'unmasked (1646).jpg', 'unmasked (1815).jpg', 'unmasked (1386).jpg', 'unmasked (1467).jpg', 'unmasked (1392).jpg', 'unmasked (1764).jpg', 'unmasked (1435).jpg', 'unmasked (1319).jpg', 'unmasked (1652).jpg', 'unmasked (1446).jpg', 'unmasked (1792).jpg', 'unmasked (1449).jpg', 'unmasked (1285).jpg', 'unmasked (1610).jpg', 'unmasked (1824).jpg', 'unmasked (1483).jpg', '195.jpg', 'unmasked (1420).jpg', 'unmasked (1690).jpg', 'unmasked (1395).jpg', 'unmasked (1440).jpg', '49.jpg', 'unmasked (1875).jpg', 'unmasked (1587).jpg', 'unmasked (1441).jpg', 'unmasked (1272).jpg', 'unmasked (1508).jpg', 'unmasked (1867).jpg', 'unmasked (1403).jpg', 'unmasked (1315).jpg', 'unmasked (1526).jpg', 'unmasked (1470).jpg', '178.jpg', 'unmasked (1725).jpg', 'unmasked (1451).jpg', 'unmasked (1500).jpg', 'unmasked (1288).jpg', 'unmasked (1613).jpg', 'unmasked (1269).jpg', 'unmasked (1733).jpg', 'unmasked (1763).jpg', 'unmasked (1521).jpg', 'unmasked (1304).jpg', 'unmasked (1612).jpg', 'unmasked (1436).jpg', 'unmasked (1595).jpg', 'unmasked (1507).jpg', 'unmasked (1598).jpg', 'unmasked (1291).jpg', 'unmasked (1546).jpg', 'unmasked (1541).jpg', 'unmasked (1274).jpg', 'unmasked (1629).jpg', 'unmasked (1509).jpg', 'unmasked (1611).jpg', 'unmasked (1475).jpg', 'unmasked (1252).jpg', 'unmasked (1405).jpg', 'unmasked (1639).jpg', '63.jpg', 'unmasked (1879).jpg', 'unmasked (1270).jpg', 'unmasked (1260).jpg', 'unmasked (1682).jpg', 'unmasked (1329).jpg', 'unmasked (1628).jpg', 'unmasked (1654).jpg', 'unmasked (1516).jpg', 'unmasked (1568).jpg', 'unmasked (1876).jpg', 'unmasked (1640).jpg', 'unmasked (1554).jpg', 'unmasked (1651).jpg']
In [15]:
val_count_unmsk =round(imb/100*VALIDATION_SIZE)
val_count_msk=VALIDATION_SIZE-val_count_unmsk
test_count_unmsk=round(imb/100*TEST_SIZE)+val_count_unmsk
test_count_msk=TEST_SIZE-test_count_unmsk+val_count_unmsk+val_count_msk
In [17]:
print ("Train samples")
print ("without mask files:[{}:{}]".format(test_count_unmsk,len(unmasked)))
print ("without mask files:[{}:{}]".format(test_count_msk,len(masked)))
print ('\n')
print ("Test samples")
print ("without mask files:[{}:{}]".format(val_count_unmsk,test_count_unmsk))
print ("with mask files:[{}:{}]".format(val_count_msk,test_count_msk))
print ('\n')
print ("Validation samples")
print ("without mask files:[{}:{}]".format(0,val_count_unmsk))
print ("with mask files:[{}:{}]".format(0,val_count_msk))
Train samples
without mask files:[276:461]
without mask files:[124:1049]


Test samples
without mask files:[207:276]
with mask files:[93:124]


Validation samples
without mask files:[0:207]
with mask files:[0:93]
In [18]:
val_files=unmasked[:val_count_unmsk]
val_files.extend(masked[:val_count_msk])
test_files=unmasked[val_count_unmsk:test_count_unmsk]
test_files.extend (masked[val_count_msk:test_count_msk])
train_files=unmasked[test_count_unmsk:]
train_files.extend (masked[test_count_msk:])
In [19]:
print (len(train_files), ' files set aside for training ')
print (len (val_files), ' files set aside for validation')
print (len (test_files), ' files set aside for final testing')
1110  files set aside for training 
300  files set aside for validation
100  files set aside for final testing
In [75]:
def copy_samples_folders(samples,folders):
  i=0
  print ("Copying files.......")
  for sample in samples:
    target=folders[i]
    print ("Copying files to ", target, "......")
    for file in sample:
      flname=file[:-4]
      img_file=flname+IMAGE_FILE_EXTENSION
      shutil.copy(DATA_FOLDER+'/obj/'+img_file, DATA_FOLDER+'/'+target+'/'+img_file)
      #print ('copied ',img_file)
      annot_flname= flname+ANNOT_FILE_EXTENSION
      shutil.copy(DATA_FOLDER+'/obj/'+annot_flname, DATA_FOLDER+'/'+target+'/'+annot_flname)
      #print ('copied ',annot_flname)
    i+=1
print ("Copied all the files")
Copied all the files
In [77]:
samples=[train_files,val_files,test_files ]
folders=['train','validation', 'test']
copy_samples_folders(samples,folders)
Copying files.......
Copying files to  train ......
Copying files to  validation ......
Copying files to  test ......
In [20]:
len(os.listdir('face_mask_data/train'))/2
Out[20]:
1110.0
In [21]:
len(os.listdir('face_mask_data/validation'))/2
Out[21]:
300.0
In [22]:
len(os.listdir('face_mask_data/test'))/2
Out[22]:
100.0
In [23]:
df_images=pd.DataFrame( columns=['file', 'width','height', 'with mask'])
In [24]:
def get_img_size(files_list, location):
  height=[]
  width=[]
  for file in files_list:
    img=cv2.imread(location+file)
    h, w,_ = img.shape
    height.append(h)
    width.append(w)
  del img
  return (height, width)
In [25]:
height, width = get_img_size(file_names, location=DATA_FOLDER+'/obj/')
In [26]:
df_images['file']=file_names
df_images['width']=width
df_images['height']=height
In [27]:
df_images['with mask']= df_images['file'].apply (lambda x: 0 if x in unmasked else 1)
In [28]:
df_images.sample(20)
Out[28]:
file width height with mask
1146 26-with-mask.jpg 444 455 1
808 masked (1669).jpg 950 534 1
623 masked (1484).jpg 500 500 1
1283 413-with-mask.jpg 320 428 1
93 unmasked (1480).jpg 290 174 0
399 with_mask (48).jpg 980 552 1
306 unmasked (1794).jpg 320 433 0
844 masked (1864).jpg 275 183 1
226 unmasked (1617).jpg 183 275 0
739 masked (1600).jpg 1280 720 1
1350 49-with-mask.jpg 182 276 1
219 unmasked (1610).jpg 276 183 0
590 masked (1451).jpg 1300 1001 1
611 masked (1472).jpg 1000 1000 1
90 unmasked (1477).jpg 179 281 0
774 masked (1635).jpg 1200 800 1
825 masked (1687).jpg 1200 800 1
555 masked (1416).jpg 634 392 1
1304 435-with-mask.jpg 960 768 1
493 with_maskb (3).jpg 960 639 1
In [29]:
df_images['width'].plot.hist( bins= 50, alpha=0.3);
plt.title("Image width distribution");
In [30]:
df_images['height'].plot.hist( bins= 50, alpha=0.5);
plt.title("Image height distribution");
In [31]:
df_images['with mask'].value_counts().plot(kind ='bar');
plt.title("Class distribution: 1: with mask, 0: with out mask");
In [32]:
df_images[['width', 'height']].describe()
Out[32]:
width height
count 1510.000000 1510.000000
mean 613.530464 568.133113
std 561.755724 478.900608
min 89.000000 105.000000
25% 300.000000 340.000000
50% 327.000000 432.000000
75% 800.000000 675.000000
max 5760.000000 5412.000000

setting scale to resize the images

In [33]:
FIG_SIZE=(613,570)

Display faces with and without mask

In [34]:
def display_images(img_file_list,location="", num_samples=10, resize=(500, 500)): # method to display a list of images in a row
  i=0
  files= [img_file_list[j] for j in random.sample(range(0, len(img_file_list)), num_samples)]
  f= plt.figure(figsize=(40,40)) 
  for file in files:
    img=cv2.imread(location+file)
    img=cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    f.add_subplot(1, len(files), i + 1)
    plt.imshow(cv2.resize(img, resize))
    plt.axis('off')
    i+=1
  plt.show()
In [36]:
print ("Displaying faces with mask")
display_images(masked, location=DATA_FOLDER+'/obj/',resize=FIG_SIZE )
print ("Displaying faces without mask")
display_images(unmasked, location=DATA_FOLDER+'/obj/', resize=FIG_SIZE)
Displaying faces with mask
Displaying faces without mask

prepare the yaml file with the label details

In [39]:
 yaml_lines=["train: " + PROJECT_PATH + "/"+ DATA_FOLDER +"/train", "val: " + PROJECT_PATH + "/"+ DATA_FOLDER +"/validation" , "test: " + PROJECT_PATH + "/"+ DATA_FOLDER +"/test", "nc: "+ str(NO_OF_CLASSES), "names: "+ str(NAMES)]
In [106]:
for line in yaml_lines:
  print (line)
train: /content/drive/My Drive/face_mask_detection/face_mask_data/train
val: /content/drive/My Drive/face_mask_detection/face_mask_data/validation
test: /content/drive/My Drive/face_mask_detection/face_mask_data/test
nc: 2
names: ['MASK', 'NO MASK']
In [43]:
f = open(YAML_FILE, "w")
for line in yaml_lines:
  print (line)
  f.write(line)
  f.write
f.close()
train: /content/drive/My Drive/face_mask_detection/face_mask_data/train
val: /content/drive/My Drive/face_mask_detection/face_mask_data/validation
test: /content/drive/My Drive/face_mask_detection/face_mask_data/test
nc: 2
names: ['MASK', 'NO MASK']
In [44]:
!ls
 archive.zip	  face_mask_detection_model.ipynb   robo.txt
 download	  mask_detection.yaml		    yolov5
 face_mask_data   OIDv4_ToolKit			   'yolov5_mask detection'

Training the model

In [45]:
!python yolov5/train.py --img 416 --batch 16 --epochs 30 --data mask_detection.yaml --cfg yolov5/models/yolov5s.yaml
Downloading https://ultralytics.com/assets/Arial.ttf to /root/.config/Ultralytics/Arial.ttf...
train: weights=yolov5/yolov5s.pt, cfg=yolov5/models/yolov5s.yaml, data=mask_detection.yaml, hyp=yolov5/data/hyps/hyp.scratch.yaml, epochs=30, batch_size=16, imgsz=416, rect=False, resume=False, nosave=False, noval=False, noautoanchor=False, evolve=None, bucket=, cache=None, image_weights=False, device=, multi_scale=False, single_cls=False, adam=False, sync_bn=False, workers=8, project=yolov5/runs/train, name=exp, exist_ok=False, quad=False, linear_lr=False, label_smoothing=0.0, patience=100, freeze=0, save_period=-1, local_rank=-1, entity=None, upload_dataset=False, bbox_interval=-1, artifact_alias=latest
github: up to date with https://github.com/ultralytics/yolov5 ✅
YOLOv5 🚀 2021-12-14 torch 1.10.0+cu111 CUDA:0 (Tesla P100-PCIE-16GB, 16281MiB)

hyperparameters: lr0=0.01, lrf=0.1, momentum=0.937, weight_decay=0.0005, warmup_epochs=3.0, warmup_momentum=0.8, warmup_bias_lr=0.1, box=0.05, cls=0.5, cls_pw=1.0, obj=1.0, obj_pw=1.0, iou_t=0.2, anchor_t=4.0, fl_gamma=0.0, hsv_h=0.015, hsv_s=0.7, hsv_v=0.4, degrees=0.0, translate=0.1, scale=0.5, shear=0.0, perspective=0.0, flipud=0.0, fliplr=0.5, mosaic=1.0, mixup=0.0, copy_paste=0.0
Weights & Biases: run 'pip install wandb' to automatically track and visualize YOLOv5 🚀 runs (RECOMMENDED)
TensorBoard: Start with 'tensorboard --logdir yolov5/runs/train', view at http://localhost:6006/
Downloading https://github.com/ultralytics/yolov5/releases/download/v6.0/yolov5s.pt to yolov5/yolov5s.pt...
100% 14.0M/14.0M [00:00<00:00, 67.4MB/s]

Overriding model.yaml nc=80 with nc=2

                 from  n    params  module                                  arguments                     
  0                -1  1      3520  models.common.Conv                      [3, 32, 6, 2, 2]              
  1                -1  1     18560  models.common.Conv                      [32, 64, 3, 2]                
  2                -1  1     18816  models.common.C3                        [64, 64, 1]                   
  3                -1  1     73984  models.common.Conv                      [64, 128, 3, 2]               
  4                -1  2    115712  models.common.C3                        [128, 128, 2]                 
  5                -1  1    295424  models.common.Conv                      [128, 256, 3, 2]              
  6                -1  3    625152  models.common.C3                        [256, 256, 3]                 
  7                -1  1   1180672  models.common.Conv                      [256, 512, 3, 2]              
  8                -1  1   1182720  models.common.C3                        [512, 512, 1]                 
  9                -1  1    656896  models.common.SPPF                      [512, 512, 5]                 
 10                -1  1    131584  models.common.Conv                      [512, 256, 1, 1]              
 11                -1  1         0  torch.nn.modules.upsampling.Upsample    [None, 2, 'nearest']          
 12           [-1, 6]  1         0  models.common.Concat                    [1]                           
 13                -1  1    361984  models.common.C3                        [512, 256, 1, False]          
 14                -1  1     33024  models.common.Conv                      [256, 128, 1, 1]              
 15                -1  1         0  torch.nn.modules.upsampling.Upsample    [None, 2, 'nearest']          
 16           [-1, 4]  1         0  models.common.Concat                    [1]                           
 17                -1  1     90880  models.common.C3                        [256, 128, 1, False]          
 18                -1  1    147712  models.common.Conv                      [128, 128, 3, 2]              
 19          [-1, 14]  1         0  models.common.Concat                    [1]                           
 20                -1  1    296448  models.common.C3                        [256, 256, 1, False]          
 21                -1  1    590336  models.common.Conv                      [256, 256, 3, 2]              
 22          [-1, 10]  1         0  models.common.Concat                    [1]                           
 23                -1  1   1182720  models.common.C3                        [512, 512, 1, False]          
 24      [17, 20, 23]  1     18879  models.yolo.Detect                      [2, [[10, 13, 16, 30, 33, 23], [30, 61, 62, 45, 59, 119], [116, 90, 156, 198, 373, 326]], [128, 256, 512]]
Model Summary: 270 layers, 7025023 parameters, 7025023 gradients, 15.9 GFLOPs

Transferred 342/349 items from yolov5/yolov5s.pt
Scaled weight_decay = 0.0005
optimizer: SGD with parameter groups 57 weight, 60 weight (no decay), 60 bias
albumentations: version 1.0.3 required by YOLOv5, but version 0.1.12 is currently installed
train: Scanning '/content/drive/My Drive/face_mask_detection/face_mask_data/train' images and labels...1110 found, 0 missing, 0 empty, 0 corrupted: 100% 1110/1110 [00:07<00:00, 155.10it/s]
train: New cache created: /content/drive/My Drive/face_mask_detection/face_mask_data/train.cache
val: Scanning '/content/drive/My Drive/face_mask_detection/face_mask_data/validation' images and labels...300 found, 0 missing, 0 empty, 0 corrupted: 100% 300/300 [00:02<00:00, 101.16it/s]
val: New cache created: /content/drive/My Drive/face_mask_detection/face_mask_data/validation.cache
Plotting labels to yolov5/runs/train/exp/labels.jpg... 

AutoAnchor: 5.21 anchors/target, 1.000 Best Possible Recall (BPR). Current anchors are a good fit to dataset ✅
Image sizes 416 train, 416 val
Using 2 dataloader workers
Logging results to yolov5/runs/train/exp
Starting training for 30 epochs...

     Epoch   gpu_mem       box       obj       cls    labels  img_size
      0/29      1.8G    0.1015   0.02815   0.02518        17       416: 100% 70/70 [00:59<00:00,  1.18it/s]
               Class     Images     Labels          P          R     mAP@.5 mAP@.5:.95: 100% 10/10 [00:05<00:00,  1.76it/s]
                 all        300        488      0.164      0.286      0.128      0.027

     Epoch   gpu_mem       box       obj       cls    labels  img_size
      1/29     1.81G   0.07266   0.03443   0.01724        14       416: 100% 70/70 [00:55<00:00,  1.27it/s]
               Class     Images     Labels          P          R     mAP@.5 mAP@.5:.95: 100% 10/10 [00:05<00:00,  1.87it/s]
                 all        300        488      0.449      0.578      0.492      0.203

     Epoch   gpu_mem       box       obj       cls    labels  img_size
      2/29     1.81G   0.06141    0.0284   0.01467        13       416: 100% 70/70 [00:59<00:00,  1.19it/s]
               Class     Images     Labels          P          R     mAP@.5 mAP@.5:.95: 100% 10/10 [00:04<00:00,  2.12it/s]
                 all        300        488       0.42       0.61        0.5      0.148

     Epoch   gpu_mem       box       obj       cls    labels  img_size
      3/29     1.81G   0.05691   0.02446   0.01238        13       416: 100% 70/70 [00:56<00:00,  1.23it/s]
               Class     Images     Labels          P          R     mAP@.5 mAP@.5:.95: 100% 10/10 [00:05<00:00,  1.92it/s]
                 all        300        488      0.609      0.624      0.561      0.255

     Epoch   gpu_mem       box       obj       cls    labels  img_size
      4/29     1.81G   0.05334    0.0227  0.009626        16       416: 100% 70/70 [00:54<00:00,  1.27it/s]
               Class     Images     Labels          P          R     mAP@.5 mAP@.5:.95: 100% 10/10 [00:05<00:00,  1.89it/s]
                 all        300        488       0.68      0.575      0.591      0.318

     Epoch   gpu_mem       box       obj       cls    labels  img_size
      5/29     1.81G   0.04967   0.02172  0.008544        24       416: 100% 70/70 [00:57<00:00,  1.22it/s]
               Class     Images     Labels          P          R     mAP@.5 mAP@.5:.95: 100% 10/10 [00:04<00:00,  2.23it/s]
                 all        300        488      0.788      0.607      0.697      0.354

     Epoch   gpu_mem       box       obj       cls    labels  img_size
      6/29     1.81G    0.0479   0.01998  0.006707        21       416: 100% 70/70 [00:56<00:00,  1.23it/s]
               Class     Images     Labels          P          R     mAP@.5 mAP@.5:.95: 100% 10/10 [00:04<00:00,  2.04it/s]
                 all        300        488       0.81       0.69      0.769      0.422

     Epoch   gpu_mem       box       obj       cls    labels  img_size
      7/29     1.81G    0.0501   0.02032  0.006029        16       416: 100% 70/70 [00:57<00:00,  1.23it/s]
               Class     Images     Labels          P          R     mAP@.5 mAP@.5:.95: 100% 10/10 [00:05<00:00,  1.95it/s]
                 all        300        488      0.837      0.697      0.764      0.452

     Epoch   gpu_mem       box       obj       cls    labels  img_size
      8/29     1.81G   0.04745   0.01914  0.005932        21       416: 100% 70/70 [00:55<00:00,  1.25it/s]
               Class     Images     Labels          P          R     mAP@.5 mAP@.5:.95: 100% 10/10 [00:04<00:00,  2.10it/s]
                 all        300        488      0.833      0.767      0.819       0.48

     Epoch   gpu_mem       box       obj       cls    labels  img_size
      9/29     1.81G   0.04405   0.01932  0.005148        19       416: 100% 70/70 [00:55<00:00,  1.27it/s]
               Class     Images     Labels          P          R     mAP@.5 mAP@.5:.95: 100% 10/10 [00:05<00:00,  1.88it/s]
                 all        300        488      0.648      0.766      0.758      0.391

     Epoch   gpu_mem       box       obj       cls    labels  img_size
     10/29     1.81G   0.04338   0.01865  0.005017        25       416: 100% 70/70 [00:55<00:00,  1.27it/s]
               Class     Images     Labels          P          R     mAP@.5 mAP@.5:.95: 100% 10/10 [00:05<00:00,  1.96it/s]
                 all        300        488      0.809       0.77      0.801      0.453

     Epoch   gpu_mem       box       obj       cls    labels  img_size
     11/29     1.81G   0.04038   0.01832  0.004129        16       416: 100% 70/70 [00:57<00:00,  1.23it/s]
               Class     Images     Labels          P          R     mAP@.5 mAP@.5:.95: 100% 10/10 [00:04<00:00,  2.07it/s]
                 all        300        488      0.816      0.688      0.765      0.364

     Epoch   gpu_mem       box       obj       cls    labels  img_size
     12/29     1.81G   0.04424   0.01888  0.004227        12       416: 100% 70/70 [00:54<00:00,  1.28it/s]
               Class     Images     Labels          P          R     mAP@.5 mAP@.5:.95: 100% 10/10 [00:04<00:00,  2.11it/s]
                 all        300        488      0.908      0.771      0.852      0.489

     Epoch   gpu_mem       box       obj       cls    labels  img_size
     13/29     1.81G   0.04041   0.01842    0.0042        22       416: 100% 70/70 [00:54<00:00,  1.28it/s]
               Class     Images     Labels          P          R     mAP@.5 mAP@.5:.95: 100% 10/10 [00:04<00:00,  2.04it/s]
                 all        300        488      0.912      0.801      0.872      0.508

     Epoch   gpu_mem       box       obj       cls    labels  img_size
     14/29     1.81G   0.03802    0.0182  0.003936        28       416: 100% 70/70 [00:55<00:00,  1.26it/s]
               Class     Images     Labels          P          R     mAP@.5 mAP@.5:.95: 100% 10/10 [00:04<00:00,  2.07it/s]
                 all        300        488      0.894      0.794      0.852      0.555

     Epoch   gpu_mem       box       obj       cls    labels  img_size
     15/29     1.81G   0.03672   0.01767  0.003718        15       416: 100% 70/70 [00:55<00:00,  1.26it/s]
               Class     Images     Labels          P          R     mAP@.5 mAP@.5:.95: 100% 10/10 [00:04<00:00,  2.12it/s]
                 all        300        488      0.875      0.834      0.869      0.547

     Epoch   gpu_mem       box       obj       cls    labels  img_size
     16/29     1.81G   0.03474   0.01767  0.003417         9       416: 100% 70/70 [00:56<00:00,  1.25it/s]
               Class     Images     Labels          P          R     mAP@.5 mAP@.5:.95: 100% 10/10 [00:04<00:00,  2.29it/s]
                 all        300        488        0.9      0.739      0.846      0.536

     Epoch   gpu_mem       box       obj       cls    labels  img_size
     17/29     1.81G    0.0333   0.01678  0.003225        19       416: 100% 70/70 [00:56<00:00,  1.24it/s]
               Class     Images     Labels          P          R     mAP@.5 mAP@.5:.95: 100% 10/10 [00:04<00:00,  2.01it/s]
                 all        300        488      0.919      0.817      0.885      0.576

     Epoch   gpu_mem       box       obj       cls    labels  img_size
     18/29     1.81G   0.03246   0.01744  0.003159        20       416: 100% 70/70 [00:56<00:00,  1.25it/s]
               Class     Images     Labels          P          R     mAP@.5 mAP@.5:.95: 100% 10/10 [00:04<00:00,  2.21it/s]
                 all        300        488      0.931      0.797      0.874       0.57

     Epoch   gpu_mem       box       obj       cls    labels  img_size
     19/29     1.81G    0.0306   0.01682  0.003334        19       416: 100% 70/70 [00:55<00:00,  1.26it/s]
               Class     Images     Labels          P          R     mAP@.5 mAP@.5:.95: 100% 10/10 [00:04<00:00,  2.13it/s]
                 all        300        488      0.896      0.775      0.871      0.574

     Epoch   gpu_mem       box       obj       cls    labels  img_size
     20/29     1.81G    0.0303   0.01588  0.002467        12       416: 100% 70/70 [00:55<00:00,  1.27it/s]
               Class     Images     Labels          P          R     mAP@.5 mAP@.5:.95: 100% 10/10 [00:04<00:00,  2.05it/s]
                 all        300        488      0.955      0.816      0.899      0.595

     Epoch   gpu_mem       box       obj       cls    labels  img_size
     21/29     1.81G   0.02881   0.01585  0.002321        19       416: 100% 70/70 [00:58<00:00,  1.19it/s]
               Class     Images     Labels          P          R     mAP@.5 mAP@.5:.95: 100% 10/10 [00:04<00:00,  2.16it/s]
                 all        300        488      0.897      0.847      0.899       0.57

     Epoch   gpu_mem       box       obj       cls    labels  img_size
     22/29     1.81G   0.02825   0.01603  0.002046        15       416: 100% 70/70 [00:55<00:00,  1.26it/s]
               Class     Images     Labels          P          R     mAP@.5 mAP@.5:.95: 100% 10/10 [00:04<00:00,  2.37it/s]
                 all        300        488      0.942       0.83      0.902      0.604

     Epoch   gpu_mem       box       obj       cls    labels  img_size
     23/29     1.81G   0.02719   0.01479  0.002313        14       416: 100% 70/70 [00:55<00:00,  1.26it/s]
               Class     Images     Labels          P          R     mAP@.5 mAP@.5:.95: 100% 10/10 [00:05<00:00,  1.98it/s]
                 all        300        488       0.95      0.818      0.895      0.595

     Epoch   gpu_mem       box       obj       cls    labels  img_size
     24/29     1.81G   0.02708   0.01547  0.002379        27       416: 100% 70/70 [00:56<00:00,  1.23it/s]
               Class     Images     Labels          P          R     mAP@.5 mAP@.5:.95: 100% 10/10 [00:05<00:00,  1.99it/s]
                 all        300        488      0.906      0.852      0.904      0.596

     Epoch   gpu_mem       box       obj       cls    labels  img_size
     25/29     1.81G   0.02603   0.01501  0.001776        12       416: 100% 70/70 [00:56<00:00,  1.24it/s]
               Class     Images     Labels          P          R     mAP@.5 mAP@.5:.95: 100% 10/10 [00:05<00:00,  1.86it/s]
                 all        300        488      0.931      0.828      0.897      0.599

     Epoch   gpu_mem       box       obj       cls    labels  img_size
     26/29     1.81G   0.02579   0.01499  0.002088        21       416: 100% 70/70 [00:56<00:00,  1.23it/s]
               Class     Images     Labels          P          R     mAP@.5 mAP@.5:.95: 100% 10/10 [00:04<00:00,  2.03it/s]
                 all        300        488       0.95      0.828      0.909      0.608

     Epoch   gpu_mem       box       obj       cls    labels  img_size
     27/29     1.81G   0.02525   0.01413  0.002037        15       416: 100% 70/70 [00:56<00:00,  1.24it/s]
               Class     Images     Labels          P          R     mAP@.5 mAP@.5:.95: 100% 10/10 [00:04<00:00,  2.29it/s]
                 all        300        488      0.928      0.882      0.919      0.613

     Epoch   gpu_mem       box       obj       cls    labels  img_size
     28/29     1.81G   0.02526   0.01463  0.001621        22       416: 100% 70/70 [00:56<00:00,  1.25it/s]
               Class     Images     Labels          P          R     mAP@.5 mAP@.5:.95: 100% 10/10 [00:04<00:00,  2.26it/s]
                 all        300        488      0.929      0.861      0.912      0.614

     Epoch   gpu_mem       box       obj       cls    labels  img_size
     29/29     1.81G   0.02547   0.01477  0.001881        14       416: 100% 70/70 [00:57<00:00,  1.22it/s]
               Class     Images     Labels          P          R     mAP@.5 mAP@.5:.95: 100% 10/10 [00:04<00:00,  2.18it/s]
                 all        300        488      0.927      0.872      0.914      0.613

30 epochs completed in 0.526 hours.
Optimizer stripped from yolov5/runs/train/exp/weights/last.pt, 14.3MB
Optimizer stripped from yolov5/runs/train/exp/weights/best.pt, 14.3MB

Validating yolov5/runs/train/exp/weights/best.pt...
Fusing layers... 
Model Summary: 213 layers, 7015519 parameters, 0 gradients, 15.8 GFLOPs
               Class     Images     Labels          P          R     mAP@.5 mAP@.5:.95: 100% 10/10 [00:07<00:00,  1.28it/s]
                 all        300        488       0.93      0.861      0.912      0.615
                MASK        300        252      0.893      0.798      0.869      0.506
             NO MASK        300        236      0.966      0.924      0.955      0.724
Results saved to yolov5/runs/train/exp

Model performance

In [53]:
print ('The PR curve')
plt.figure(figsize=(10,10)) 
pr_curve_img=cv2.cvtColor(cv2.imread(PERFORMANCE_FILE_LOC+"/PR_curve.png"), cv2.COLOR_BGR2RGB)
plt.imshow(pr_curve_img);
plt.axis('off');
The PR curve
In [55]:
print ('The Confusion matrix')
plt.figure(figsize=(15,15)) 
pr_curve_img=cv2.cvtColor(cv2.imread(PERFORMANCE_FILE_LOC+"/confusion_matrix.png"), cv2.COLOR_BGR2RGB)
plt.imshow(pr_curve_img);
plt.axis('off');
The Confusion matrix
In [56]:
print ('Training details')
plt.figure(figsize=(20,20)) 
pr_curve_img=cv2.cvtColor(cv2.imread(PERFORMANCE_FILE_LOC+"/results.png"), cv2.COLOR_BGR2RGB)
plt.imshow(pr_curve_img);
plt.axis('off');
Training details
In [57]:
!python yolov5/detect.py --weights yolov5/runs/train/exp/weights/best.pt --img 416 --conf 0.5 --source face_mask_data/test 
detect: weights=['yolov5/runs/train/exp/weights/best.pt'], source=face_mask_data/test, imgsz=[416, 416], conf_thres=0.5, iou_thres=0.45, max_det=1000, device=, view_img=False, save_txt=False, save_conf=False, save_crop=False, nosave=False, classes=None, agnostic_nms=False, augment=False, visualize=False, update=False, project=yolov5/runs/detect, name=exp, exist_ok=False, line_thickness=3, hide_labels=False, hide_conf=False, half=False, dnn=False
YOLOv5 🚀 2021-12-14 torch 1.10.0+cu111 CUDA:0 (Tesla P100-PCIE-16GB, 16281MiB)

Fusing layers... 
Model Summary: 213 layers, 7015519 parameters, 0 gradients, 15.8 GFLOPs
image 1/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/132.jpg: 320x416 1 NO MASK, Done. (0.015s)
image 2/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/151.jpg: 416x288 1 NO MASK, Done. (0.016s)
image 3/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/157-with-mask.jpg: 416x288 1 MASK, Done. (0.036s)
image 4/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/170-with-mask.jpg: 416x352 1 MASK, Done. (0.016s)
image 5/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/293-with-mask.jpg: 416x320 1 MASK, Done. (0.015s)
image 6/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/294-with-mask.jpg: 416x320 1 MASK, Done. (0.010s)
image 7/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/334-with-mask.jpg: 416x320 1 MASK, Done. (0.013s)
image 8/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/348-with-mask.jpg: 416x320 1 MASK, Done. (0.011s)
image 9/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/377-with-mask.jpg: 416x288 1 MASK, Done. (0.013s)
image 10/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/382-with-mask.jpg: 416x320 1 MASK, Done. (0.020s)
image 11/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/433-with-mask.jpg: 416x320 1 MASK, Done. (0.011s)
image 12/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/443-with-mask.jpg: 256x416 1 MASK, Done. (0.016s)
image 13/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/444-with-mask.jpg: 416x416 1 MASK, Done. (0.012s)
image 14/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/57-with-mask.jpg: 416x288 1 MASK, Done. (0.012s)
image 15/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/73-with-mask.jpg: 416x416 1 MASK, Done. (0.012s)
image 16/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/masked (1270).jpg: 416x416 1 MASK, Done. (0.011s)
image 17/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/masked (1283).jpg: 416x416 1 MASK, Done. (0.012s)
image 18/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/masked (1387).jpg: 416x416 1 MASK, Done. (0.011s)
image 19/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/masked (1417).jpg: 288x416 1 MASK, Done. (0.015s)
image 20/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/masked (1427).jpg: 416x416 1 MASK, Done. (0.011s)
image 21/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/masked (1572).jpg: 224x416 1 MASK, Done. (0.015s)
image 22/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/masked (1584).jpg: 416x416 1 MASK, Done. (0.012s)
image 23/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/masked (1601).jpg: 256x416 1 MASK, Done. (0.012s)
image 24/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/masked (1621).jpg: 256x416 1 MASK, Done. (0.013s)
image 25/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/masked (1873).jpg: 320x416 1 MASK, Done. (0.012s)
image 26/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/masked (1900).jpg: 416x256 1 MASK, Done. (0.015s)
image 27/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/masked (1904).jpg: 256x416 2 MASKs, Done. (0.012s)
image 28/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1265).jpg: 416x320 1 NO MASK, Done. (0.012s)
image 29/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1267).jpg: 416x384 1 NO MASK, Done. (0.024s)
image 30/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1270).jpg: 416x416 1 NO MASK, Done. (0.012s)
image 31/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1286).jpg: 416x320 1 NO MASK, Done. (0.012s)
image 32/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1302).jpg: 416x416 1 NO MASK, Done. (0.012s)
image 33/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1309).jpg: 416x320 1 NO MASK, Done. (0.012s)
image 34/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1313).jpg: 416x416 1 NO MASK, Done. (0.012s)
image 35/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1334).jpg: 416x320 1 NO MASK, Done. (0.012s)
image 36/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1335).jpg: 416x320 1 NO MASK, Done. (0.011s)
image 37/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1337).jpg: 416x384 1 NO MASK, Done. (0.016s)
image 38/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1376).jpg: 416x320 1 NO MASK, Done. (0.012s)
image 39/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1390).jpg: 416x320 1 NO MASK, Done. (0.010s)
image 40/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1396).jpg: 320x416 1 NO MASK, Done. (0.013s)
image 41/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1410).jpg: 416x320 1 NO MASK, Done. (0.012s)
image 42/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1426).jpg: 416x416 1 NO MASK, Done. (0.016s)
image 43/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1432).jpg: 416x320 1 NO MASK, Done. (0.012s)
image 44/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1437).jpg: 416x320 1 NO MASK, Done. (0.011s)
image 45/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1439).jpg: 416x320 1 NO MASK, Done. (0.011s)
image 46/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1445).jpg: 416x320 1 NO MASK, Done. (0.010s)
image 47/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1448).jpg: 352x416 1 NO MASK, Done. (0.015s)
image 48/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1450).jpg: 416x288 1 NO MASK, Done. (0.012s)
image 49/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1455).jpg: 416x384 1 NO MASK, Done. (0.015s)
image 50/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1456).jpg: 416x352 1 NO MASK, Done. (0.012s)
image 51/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1461).jpg: 416x320 1 NO MASK, Done. (0.016s)
image 52/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1464).jpg: 416x320 1 NO MASK, Done. (0.010s)
image 53/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1467).jpg: 416x320 1 NO MASK, Done. (0.010s)
image 54/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1468).jpg: 416x320 1 NO MASK, Done. (0.011s)
image 55/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1473).jpg: 416x352 1 NO MASK, Done. (0.012s)
image 56/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1475).jpg: 416x416 1 NO MASK, Done. (0.012s)
image 57/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1479).jpg: 416x416 1 NO MASK, Done. (0.014s)
image 58/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1489).jpg: 416x384 1 NO MASK, Done. (0.013s)
image 59/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1501).jpg: 416x288 1 NO MASK, Done. (0.012s)
image 60/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1502).jpg: 256x416 1 NO MASK, Done. (0.012s)
image 61/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1512).jpg: 416x320 1 NO MASK, Done. (0.012s)
image 62/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1532).jpg: 416x320 1 NO MASK, Done. (0.011s)
image 63/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1535).jpg: 416x320 1 NO MASK, Done. (0.010s)
image 64/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1544).jpg: 416x416 1 NO MASK, Done. (0.014s)
image 65/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1554).jpg: 416x352 1 NO MASK, Done. (0.021s)
image 66/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1568).jpg: 416x320 1 NO MASK, Done. (0.012s)
image 67/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1571).jpg: 416x416 1 NO MASK, Done. (0.012s)
image 68/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1573).jpg: 416x320 1 NO MASK, Done. (0.013s)
image 69/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1575).jpg: 416x320 1 NO MASK, Done. (0.016s)
image 70/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1578).jpg: 416x384 1 NO MASK, Done. (0.015s)
image 71/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1579).jpg: 416x320 1 NO MASK, Done. (0.012s)
image 72/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1581).jpg: 416x320 1 NO MASK, Done. (0.011s)
image 73/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1582).jpg: 416x320 1 NO MASK, Done. (0.011s)
image 74/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1596).jpg: 416x416 1 NO MASK, Done. (0.012s)
image 75/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1599).jpg: 416x320 1 NO MASK, Done. (0.013s)
image 76/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1601).jpg: 416x320 1 NO MASK, Done. (0.011s)
image 77/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1602).jpg: 416x320 1 NO MASK, Done. (0.012s)
image 78/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1605).jpg: 416x352 1 NO MASK, Done. (0.012s)
image 79/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1620).jpg: 416x384 1 NO MASK, Done. (0.014s)
image 80/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1628).jpg: 416x352 1 NO MASK, Done. (0.013s)
image 81/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1629).jpg: 416x352 1 NO MASK, Done. (0.011s)
image 82/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1632).jpg: 288x416 1 NO MASK, Done. (0.012s)
image 83/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1655).jpg: 416x320 1 NO MASK, Done. (0.012s)
image 84/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1662).jpg: 416x288 1 NO MASK, Done. (0.012s)
image 85/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1663).jpg: 416x320 1 NO MASK, Done. (0.012s)
image 86/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1672).jpg: 416x352 1 NO MASK, Done. (0.012s)
image 87/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1741).jpg: 416x320 1 NO MASK, Done. (0.016s)
image 88/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1761).jpg: 416x320 1 NO MASK, Done. (0.012s)
image 89/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1764).jpg: 416x320 1 NO MASK, Done. (0.011s)
image 90/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1778).jpg: 416x320 1 NO MASK, Done. (0.011s)
image 91/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1788).jpg: 416x320 1 NO MASK, Done. (0.010s)
image 92/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1815).jpg: 416x320 1 NO MASK, Done. (0.010s)
image 93/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1822).jpg: 416x320 1 NO MASK, Done. (0.012s)
image 94/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/unmasked (1900).jpg: 416x320 1 NO MASK, Done. (0.011s)
image 95/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/with_mask (19).jpg: 320x416 7 MASKs, 2 NO MASKs, Done. (0.014s)
image 96/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/with_mask (52).jpg: 416x288 1 MASK, Done. (0.017s)
image 97/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/with_mask (54).jpg: 416x320 2 MASKs, Done. (0.013s)
image 98/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/with_mask (68).jpg: 288x416 10 MASKs, Done. (0.014s)
image 99/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/with_mask (94).jpg: 256x416 9 MASKs, Done. (0.012s)
image 100/100 /content/drive/My Drive/face_mask_detection/face_mask_data/test/with_maskb (15).jpg: 256x416 1 MASK, Done. (0.011s)
Speed: 0.3ms pre-process, 12.9ms inference, 1.2ms NMS per image at shape (1, 3, 416, 416)
Results saved to yolov5/runs/detect/exp

The inferencing takes about 13ms

In [78]:
location=PROJECT_PATH+'/yolov5/runs/detect/exp/'
results=[]
for files in os.listdir(location):
  if files.endswith(IMAGE_FILE_EXTENSION):
      results.append(files)
print (len(results), " images found")
100  images found
In [79]:
print (results)
['132.jpg', '151.jpg', '157-with-mask.jpg', '170-with-mask.jpg', '293-with-mask.jpg', '294-with-mask.jpg', '334-with-mask.jpg', '348-with-mask.jpg', '377-with-mask.jpg', '382-with-mask.jpg', '433-with-mask.jpg', '443-with-mask.jpg', '444-with-mask.jpg', '57-with-mask.jpg', '73-with-mask.jpg', 'masked (1270).jpg', 'masked (1283).jpg', 'masked (1387).jpg', 'masked (1417).jpg', 'masked (1427).jpg', 'masked (1572).jpg', 'masked (1584).jpg', 'masked (1601).jpg', 'masked (1621).jpg', 'masked (1873).jpg', 'masked (1900).jpg', 'masked (1904).jpg', 'unmasked (1265).jpg', 'unmasked (1267).jpg', 'unmasked (1270).jpg', 'unmasked (1286).jpg', 'unmasked (1302).jpg', 'unmasked (1309).jpg', 'unmasked (1313).jpg', 'unmasked (1334).jpg', 'unmasked (1335).jpg', 'unmasked (1337).jpg', 'unmasked (1376).jpg', 'unmasked (1390).jpg', 'unmasked (1396).jpg', 'unmasked (1410).jpg', 'unmasked (1426).jpg', 'unmasked (1432).jpg', 'unmasked (1437).jpg', 'unmasked (1439).jpg', 'unmasked (1445).jpg', 'unmasked (1448).jpg', 'unmasked (1450).jpg', 'unmasked (1455).jpg', 'unmasked (1456).jpg', 'unmasked (1461).jpg', 'unmasked (1464).jpg', 'unmasked (1467).jpg', 'unmasked (1468).jpg', 'unmasked (1473).jpg', 'unmasked (1475).jpg', 'unmasked (1479).jpg', 'unmasked (1489).jpg', 'unmasked (1501).jpg', 'unmasked (1502).jpg', 'unmasked (1512).jpg', 'unmasked (1532).jpg', 'unmasked (1535).jpg', 'unmasked (1544).jpg', 'unmasked (1554).jpg', 'unmasked (1568).jpg', 'unmasked (1571).jpg', 'unmasked (1573).jpg', 'unmasked (1575).jpg', 'unmasked (1578).jpg', 'unmasked (1579).jpg', 'unmasked (1581).jpg', 'unmasked (1582).jpg', 'unmasked (1596).jpg', 'unmasked (1599).jpg', 'unmasked (1601).jpg', 'unmasked (1602).jpg', 'unmasked (1605).jpg', 'unmasked (1620).jpg', 'unmasked (1628).jpg', 'unmasked (1629).jpg', 'unmasked (1632).jpg', 'unmasked (1655).jpg', 'unmasked (1662).jpg', 'unmasked (1663).jpg', 'unmasked (1672).jpg', 'unmasked (1741).jpg', 'unmasked (1761).jpg', 'unmasked (1764).jpg', 'unmasked (1778).jpg', 'unmasked (1788).jpg', 'unmasked (1815).jpg', 'unmasked (1822).jpg', 'unmasked (1900).jpg', 'with_mask (19).jpg', 'with_mask (52).jpg', 'with_mask (54).jpg', 'with_mask (68).jpg', 'with_mask (94).jpg', 'with_maskb (15).jpg']

Checking the output images

In [85]:
display_images(results, location=location, num_samples=5, resize=FIG_SIZE )
In [ ]:
 
In [86]:
display_images(results, location=location, num_samples=5, resize=FIG_SIZE )
In [87]:
display_images(results, location=location, num_samples=5, resize=FIG_SIZE )
In [ ]:
! jupyter nbconvert --to html face_mask_detection_model.ipynb